删除元素时压缩QDialog

时间:2017-05-12 16:38:54

标签: qt layout window-resize qdialog

我有QDialog这个嵌套的QGroupBox可以在对话框的构造函数中删除(通过各种QDialog方法,例如hide(),{{ 1}}和setVisible())。不幸的是,当我删除它时,对话框保持相同的大小。有趣的是,主setHidden()(具有嵌套QGroupBox的那个)收缩,但窗口的其余部分没有收缩。因此,主QGroupBox周围有很大的空间。

我试过了:

  • 在ctor 中调用QGroupBox,在QDialog::resize()调用,将高度减少30(已移除的QMetaObject::invokeMethod()的大小),但不执行任何操作。
  • 拨打QGroupBox(同样在ctor和QDialog::adjustSize()),但这只会增加两个维度(就像疯狂的大!)。
  • 更改QMetaObject::invokeMethod()""垂直政策"来自"首选" (无论如何)到"最低"但这没什么。

QDialog有网格布局。

修改:我注意到主QDialog上方和下方有verticalSpacersQGroupBox。无论我将他们的政策和规模提示设置为无差别 - 当我致电adjustSize()时,他们仍会使整个窗口变得非常大。删除它们会使adjustSize()获得正确的高度,但宽度仍然太大。删除它们而不是调用adjustSize()然后导致主QGroupBox保持相同的大小,并且由于删除了一些孩子而不会缩小。

我在Ubuntu 16.04上运行Qt 4.8。

1 个答案:

答案 0 :(得分:1)

您可以在对话框布局上使用QLayout::setSizeConstraint强制它自动调整大小,具体取决于其内容,QLayout::SetFixedSizeQLayout::SetMinAndMaxSize作为参数(后者允许用户调整对话框大小) 。

使用SetMinAndMaxSize,您可能还需要在主QGroupBox布局上更改该属性,或者至少将其垂直布局策略设置为MaximumFixed。< / p>