Qt 显示图像并自动调整其大小

Qt 显示图像并自动调整其大小,qt,qt4,qpixmap,qlabel,Qt,Qt4,Qpixmap,Qlabel,在我的特殊情况下,我不太清楚显示图像的最佳方式是什么,所以希望这里有人能给我一些提示 我想显示一个图像,该图像会自动重新调整大小,以适应可用空间。目前,我通过创建一个从QLabel派生的类来实现void resizeEvent(QResizeEvent*),其中我使用QPixmap::scaled来重新调整图像的大小。问题是,这只在小部件被放大时起作用,因为当我试图使小部件变小时,小部件没有得到resizeEvent。我猜,因为我将图像设置为与小部件相同的大小,所以不允许再次缩小图像的大小?我想

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

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

只要改变大小,就会发送resizeEvent。放大与否无关紧要。 但您可以在收缩/放大中为约束小部件设置策略和最大/最小大小。因此,如果您的小部件没有得到resizeEvent,并且它也没有收缩,那么请查看您的大小策略和最小宽度/高度。如果它缩小了,但你没有resizeEvent,那么你的逻辑就有一些错误,我相信

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

尝试将标签的名称更改为QSizePolicy::Preferred

请查看一般的大小策略。

它不会收缩(因此不会得到resizeEvent)。。我来看看这个调整大小的政策