问题 Qt:如何将窗口大小调整为新内容


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

到现在为止,我正在创造 QScrollArea 它的子窗口小部件在我的窗口的构造函数中,然后我垂直调整窗口大小以适应其内容 resize(400, sizeHint().height())。到现在为止还挺好。

现在,我正在添加或删除小部件 QScrollArea 在运行时。添加或删除小部件后,我应该怎么做才能使窗口垂直适合其内容?我应该打电话吗? adjustSize()resize(sizeHint())?应该打电话给 layout->activate() 或者可能 updateGeometry() 第一?在这种情况下,哪种规模的政策真正重要窗口,或滚动区域,或两者?我试着将它们全部设置为 Expanding

我在Windows上使用Qt 4.6。


3358
2017-08-31 18:00


起源

你想让QScrollArea没有滚动条吗? - Arnold Spence
当然,现在的想法是摆脱垂直滚动条。下一步是仅在QScrollArea内容的总高度确实太大或者用户调整窗口大小时才允许它出现。 - François Beaune


答案:


似乎在呼唤 resize(sizeHint()) 小部件被添加到滚动区域之后(没有任何其他魔法)实际上是诀窍。不知何故第一次错过了。


10
2017-09-01 08:17



我需要它进行垂直调整,这就出现了: QSize s = sizeHint(); s.setWidth(width()); resize(s); - Notinlist
也许这会帮助其他人找到这个问题而不是我的问题。该对话框实际上正在调整内容的大小,但由于QT设计器中窗口的大小,它在底部被切断。在QT设计器中调整窗口大小以允许在底部有更多空间为我修复它 - slf