Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt:如何调整图像大小并保持其比例?_C++_Image_Qt_Image Resizing - Fatal编程技术网

C++ Qt:如何调整图像大小并保持其比例?

C++ Qt:如何调整图像大小并保持其比例?,c++,image,qt,image-resizing,C++,Image,Qt,Image Resizing,此Qt显示如何调整对话框中包含的图像的大小,以便在调整对话框大小时,图像相应地拉伸 如何以相同的方式调整图像大小,而不使其变形/保持其比例不变 当然,如果对话框的宽高比与图像的宽高比不同,我将得到一个“灰色”区域。 我找到了Qt::KeepAspectRatioenum,但找不到使用它的函数 更新:这是我正在尝试的代码: QImage image(path); QImage image2 = image.scaled(200, 200, Qt::KeepAspectRatio); QLabel

此Qt显示如何调整对话框中包含的图像的大小,以便在调整对话框大小时,图像相应地拉伸

如何以相同的方式调整图像大小,而不使其变形/保持其比例不变

当然,如果对话框的宽高比与图像的宽高比不同,我将得到一个“灰色”区域。
我找到了
Qt::KeepAspectRatio
enum,但找不到使用它的函数

更新:这是我正在尝试的代码:

QImage image(path);
QImage image2 = image.scaled(200, 200, Qt::KeepAspectRatio);
QLabel *plotImg = new QLabel;
plotImg->setScaledContents(true);
plotImg->setPixmap(QPixmap::fromImage(image2));
调整标签大小时,图像不会保持恒定的纵横比。重新缩放后分辨率会降低。

使用该功能

QImage img("someimage.png");
QImage img2 = img.scaled(100, 100, Qt::KeepAspectRatio);

如果您在
QPixmap
中需要它,.

我更新了我的问题,包括您的建议。
QLabel
将不会调整显示的pixmap的大小,除非已设置。另外,您可能希望将最后一个参数传递到
scaled
。scaledContents已经在我的代码中,我只是忘记在我的示例中复制它。现在我修好了。结果仍然是一样的。Qt::SmoothTransformation只是确定图像大小调整的质量/算法。它对宽高比没有影响。只是不要使用
scaledContents
。您可以对窗口的大小做出反应,以使用新的缩放贴图重置像素贴图。