2

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

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

4

2 回答 2

0

尝试将标签的大小策略更改为 QSizePolicy::Preferred。

总体上看一下尺寸政策。

于 2013-02-19T11:49:34.557 回答
0

每当大小更改时都会发送resizeEvent 。放大与否无关紧要。但是您可以在缩小/放大时将 Policy 和 Max/Min size 设置为约束小部件。因此,如果您的小部件没有获得resizeEvent并且它也没有缩小,那么请查看您的尺寸政策和最小宽度/高度。如果它缩小但你没有resizeEvent那么你的逻辑有一些错误,我相信。

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

于 2013-02-19T11:48:01.200 回答