我有一个带有布局和 QLabel 的窗口。 QLabel 包含一个图像。图像应填充 QLabel 的父布局。如果用户决定缩小窗口,图像应该缩小直到达到最小尺寸——此时窗口不应再缩放。如果用户决定放大窗口,图像应该变大。在这两种情况下,图像的纵横比都应保持不变。
我已经使用 setScaledContents 设法用图像填充 QLabel 的父级。然而,最小尺寸似乎总是图像文件的原始尺寸,我没有定义 - 当我尝试通过 QPixmap.scaled() 定义它时,它使图像极度像素化。虽然我可以放大图像,但纵横比永远不会保留。
我觉得这应该是相当简单的,但我很迷茫。帮助!
最佳答案
使用setMinimumSize和 setSizePolicy用size policy最小值,这应该阻止标签缩小到您设置的最小尺寸以下。
保持纵横比稍微复杂一些。首先将要绘制的图像的像素图保存为 QLabel 的成员变量。接下来重新实现标签的绘制事件,以便您可以自己缩放像素图。如果你在 paint 事件中调用 this->size() ,你将得到要绘制像素图的区域。调用scaled在具有该大小和 Qt::KeepAspectRatio 的像素图上,然后在标签上设置像素图。最后调用 QLabel::paint_event。
关于c++ - Qt QLabel 使用窗口缩放图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40139306/