3

我正在做一个项目,我必须显示一个非常大(垂直)的主小部件。在我的 GUI 的初始版本中,它只是添加为 QMainWindow 的中央小部件,这导致了在小屏幕分辨率上无法访问小部件底部的控件的问题。为了解决这个问题,我在主 Widget 周围包裹了一个 QScrollArea,但现在主窗口总是相对较小,即使它不是必须的。

我需要更改什么以使主窗口(垂直)大小足够大以显示所有内容,除非它对于屏幕分辨率来说太大了?另外我不希望它被拉伸,所以简单地总是使用整个垂直屏幕分辨率不是一个选项。理想情况下,大小应固定为内容所需的大小(不包括滚动区域),并且仅在需要时更小。

覆盖 sizeHint 方法确实只会导致窗口的小幅放大,并且设置最小高度使我回到开始时某些控件无法在小分辨率上评估的开始。

由于我是 QT 的新手,我实际上不知道如何在谷歌上搜索解决方案,因为我能找到的大多数解决方案都是关于调整 Window 内的组件而不是 Window 本身。

4

1 回答 1

0

默认情况下,QScrollArea 不会尝试扩展以适应其内容。为此,您需要重新实现 QScrollArea 的 sizeHint() 以返回 QScrollArea 的子窗口小部件的大小。

在您的问题中,听起来您正在尝试重新实现 MainWindow 的 sizeHint?在顶级窗口上重新实现 sizeHint 将没有效果,因为 sizeHint 设计用于布局内的小部件。

于 2016-08-05T11:24:27.940 回答