我有QDialog
这个嵌套的QGroupBox
可以在对话框的构造函数中删除(通过各种QDialog
方法,例如hide()
,{{ 1}}和setVisible()
)。不幸的是,当我删除它时,对话框保持相同的大小。有趣的是,主setHidden()
(具有嵌套QGroupBox
的那个)收缩,但窗口的其余部分没有收缩。因此,主QGroupBox
周围有很大的空间。
我试过了:
QGroupBox
,在QDialog::resize()
调用,将高度减少30(已移除的QMetaObject::invokeMethod()
的大小),但不执行任何操作。 QGroupBox
(同样在ctor和QDialog::adjustSize()
),但这只会增加两个维度(就像疯狂的大!)。QMetaObject::invokeMethod()
""垂直政策"来自"首选" (无论如何)到"最低"但这没什么。 QDialog
有网格布局。
修改:我注意到主QDialog
上方和下方有verticalSpacers
个QGroupBox
。无论我将他们的政策和规模提示设置为无差别 - 当我致电adjustSize()
时,他们仍会使整个窗口变得非常大。删除它们会使adjustSize()
获得正确的高度,但宽度仍然太大。删除它们而不是调用adjustSize()
然后导致主QGroupBox
保持相同的大小,并且由于删除了一些孩子而不会缩小。
我在Ubuntu 16.04上运行Qt 4.8。
答案 0 :(得分:1)
您可以在对话框布局上使用QLayout::setSizeConstraint
强制它自动调整大小,具体取决于其内容,QLayout::SetFixedSize
或QLayout::SetMinAndMaxSize
作为参数(后者允许用户调整对话框大小) 。
使用SetMinAndMaxSize
,您可能还需要在主QGroupBox
布局上更改该属性,或者至少将其垂直布局策略设置为Maximum
或Fixed
。< / p>