在QScrollArea中调整QLabel的大小时遇到问题



我试图按照下面链接中的示例,在可滚动区域中显示一张图片(在qlabel中(。

https://doc.qt.io/qt-5/qtwidgets-widgets-imageviewer-example.html

我正在使用Qt Designer来制作ui,而不是对所有内容进行硬编码。所以我有一个QLabel,在QWidget中(分配了网格布局(,在QScrollArea中。

在教程中,他们为QLabel的sizepolicy声明了以下内容:

我们将imageLabel的[QLabel]大小策略设置为忽略,使用户能够在打开"适合窗口"选项时将图像缩放到他们想要的任何大小。否则,默认大小策略(首选(将在滚动区域小于标签的最小大小提示时显示滚动条。

如预期和所述,将其设置为忽略适合窗口。当图像大于滚动区域时,也如预期和所述,将其设置为"首选"将提供滚动条。我的问题是,当sizepolicy设置为preferred时,QLabel的resize函数不起作用。它始终保持在加载图像的默认大小。我能让调整大小功能发挥作用的唯一方法是,当我不在QScrollArea中为小部件分配布局/中断布局时,但当图像大于QScrollArea时,不会出现滚动条。

有人知道如何使调整大小功能和滚动条同时工作吗?

提前感谢您的帮助。我仍然在努力学习qt5,这似乎是一件简单的事情,但它慢慢地让我发疯了。

有人知道如何使调整大小功能和滚动条同时工作吗?

如果通过";调整大小函数";您指的是调整大小的功能,您可以切换到fixed策略而不是preferred,然后使用setFixedSize方法而不是resize方法。这将调整QLabel的大小,并使其父QScrollArea的滚动条自动适应新的大小。

最新更新