2013-02-19 34 views
2

我不能完全弄清楚显示图像的最佳方式是在我的特定情况下,所以希望这里有人提供一些提示。显示一个图像并自动调整大小

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

回答

0

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

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

+0

它不收缩(因此它没有得到一个resizeEvent)..我会看看这个调整大小政策 – Lieuwe 2013-02-19 11:49:51

0

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

查看一般尺寸政策。