显示图像并自动重新调整大小

时间:2013-02-19 10:53:31

标签: qt qt4 qpixmap qlabel

我无法弄清楚在我的特定情况下显示图像的最佳方式是什么,所以希望这里的人有一些提示。

我想显示一个自动重新调整大小以适应可用空间的图像。我目前通过创建一个派生自QLabel的类来实现此目的,该类实现void resizeEvent(QResizeEvent*),我在其中QPixmap::scaled重新调整图像大小。问题是这只有在窗口小部件放大时才有效,因为当我尝试使窗口小部件更小时,窗口小部件没有得到resizeEvent。我想这是因为我将图像设置为与窗口小部件相同的大小,不允许再次缩小尺寸?我想我可以尝试创建一个较小的图像,因此在图像周围引入了一种“边界”,这可能允许在使区域变小时发生重新尺寸事件。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

只要更改大小,就会发送

resizeEvent 。它是否被放大并不重要。 但您可以在收缩/放大中将策略和最大/最小尺寸设置为约束小部件。因此,如果您的小部件没有 resizeEvent 并且它也没有缩小,那么请查看您的大小策略和最小宽度/高度。如果它缩小但你没有 resizeEvent ,那么你在逻辑上有一些错误,我相信。

或者,您可以使用 paintEvent 进行图像绘制,并使用QWidget :: rect()作为窗口小部件的宽度/高度。

答案 1 :(得分:0)

尝试将标签的size policy更改为QSizePolicy :: Preferred。

一般来看一下尺寸政策。