删除元素时压缩 QDialog

Compacting QDialog when elements are removed

我有一个带有嵌套 QGroupBoxQDialog,它可以在对话的构造函数中删除(通过各种 QDialog 方法,例如 hide()setVisible()setHidden())。不幸的是,当我删除它时,对话框保持相同的大小。有趣的是,主要的 QGroupBox(带有嵌套 QGroupBox 的那个)缩小了,但 window 的其余部分没有缩小。因此,主要 QGroupBox.

周围有很大的空间

我试过:

QDialog 具有网格布局。

编辑:我注意到在主要 QGroupBox 的上方和下方有这些 verticalSpacers。无论我将它们的策略和大小提示设置为什么都没有区别——当我调用 adjustSize() 时,它们仍然使整个 window 非常大。删除它们会使 adjustSize() 获得正确的高度,但宽度仍然太大。删除它们而不调用 adjustSize() 会导致主要 QGroupBox 保持相同的大小,并且不会因为删除它的一些子项而缩小。

我 运行 Qt 4.8 Ubuntu 16.04.

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

对于 SetMinAndMaxSize,您可能还需要更改主要 QGroupBox 布局上的 属性,或者至少将其垂直布局策略设置为 MaximumFixed.