Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.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 QLabel带窗口缩放图像_C++_Image_Qt - Fatal编程技术网

C++ Qt QLabel带窗口缩放图像

C++ Qt QLabel带窗口缩放图像,c++,image,qt,C++,Image,Qt,我有一个带有布局和QLabel的窗口。QLabel包含一个映像。图像应该填充QLabel的父布局。如果用户决定缩小窗口,图像应该缩小,直到达到最小尺寸-此时窗口将不再可缩放。如果用户决定放大窗口,图像应该增大。在这两种情况下,应保留图像的纵横比 我已使用setScaledContents成功地用图像填充QLabel的父级。但是,最小大小似乎始终是图像文件的原始大小,我没有定义任何内容-当我尝试通过QPixmap.scaled()定义它时,它会使图像非常像素化。虽然我可以放大图像,但纵横比永远不会

我有一个带有布局和QLabel的窗口。QLabel包含一个映像。图像应该填充QLabel的父布局。如果用户决定缩小窗口,图像应该缩小,直到达到最小尺寸-此时窗口将不再可缩放。如果用户决定放大窗口,图像应该增大。在这两种情况下,应保留图像的纵横比

我已使用setScaledContents成功地用图像填充QLabel的父级。但是,最小大小似乎始终是图像文件的原始大小,我没有定义任何内容-当我尝试通过QPixmap.scaled()定义它时,它会使图像非常像素化。虽然我可以放大图像,但纵横比永远不会被保留

我觉得这应该是相当直截了当的,但我很迷茫。救命啊

使用并使用最小值,这将阻止标签缩小到您设置的最小尺寸以下

保持纵横比稍微复杂一些。首先将要绘制的图像的pixmap保存为QLabel的成员变量。接下来,重新实现标签的绘制事件,以便您可以自己缩放pixmap。如果在绘制事件中调用此->size(),将获得绘制像素贴图的区域。调用具有该大小和Qt::KeepAspectRatio的pixmap,然后在标签上设置pixmap。最后调用QLabel::paint_事件

使用并使用最小值,这将阻止标签缩小到您设置的最小尺寸以下

保持纵横比稍微复杂一些。首先将要绘制的图像的pixmap保存为QLabel的成员变量。接下来,重新实现标签的绘制事件,以便您可以自己缩放pixmap。如果在绘制事件中调用此->size(),将获得绘制像素贴图的区域。调用具有该大小和Qt::KeepAspectRatio的pixmap,然后在标签上设置pixmap。最后调用QLabel::paint_事件