Qt:如何将窗口调整大小以适应其新内容

12

我有一个包含一些小部件的QScrollArea窗口。

以前,我是在构造函数中创建QScrollArea和其子小部件,然后使用resize(400, sizeHint().height())垂直调整窗口大小以适应其内容。到目前为止,一切正常。

现在,我正在运行时添加或删除QScrollArea中的小部件。添加或删除后,应该做些什么来使窗口垂直适应其内容?我应该调用adjustSize()resize(sizeHint())? 在此之前是否应该调用layout->activate()updateGeometry()?在此情况下,哪些大小策略实际上很重要?窗口的大小策略、滚动区域的大小策略还是两者都是?我试过将它们全部设置为Expanding

我正在Windows上使用Qt 4.6。


您想让QScrollArea没有滚动条吗? - Arnold Spence
目前的想法是绝对要摆脱垂直滚动条。下一步将允许它仅在QScrollArea内容的总高度真正太大或用户调整窗口大小时才出现。 - François Beaune
1个回答

12

看起来只需在向滚动区域添加小部件后调用resize(sizeHint())(没有其他魔法),实际上就可以解决问题。第一次不知道怎么错过了这点。


1
我需要它进行垂直调整,然后出现了这个代码:QSize s = sizeHint(); s.setWidth(width()); resize(s); - Notinlist
也许这会帮助其他遇到类似问题的人。对话框实际上是根据内容进行调整大小的,但由于QT设计器中窗口的大小,它在底部被截断了。在QT设计器中调整窗口大小以在底部留出更多空间解决了我的问题。 - slf
这个解决方案可能只适用于Windows。在这个Qt论坛主题中提供了另一种替代方案:调整顶层窗口大小以适应内容 - ekhumoro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接