删除元素时压缩 QDialog
Compacting QDialog when elements are removed
我有一个带有嵌套 QGroupBox
的 QDialog
,它可以在对话的构造函数中删除(通过各种 QDialog
方法,例如 hide()
、setVisible()
和 setHidden()
)。不幸的是,当我删除它时,对话框保持相同的大小。有趣的是,主要的 QGroupBox
(带有嵌套 QGroupBox
的那个)缩小了,但 window 的其余部分没有缩小。因此,主要 QGroupBox
.
周围有很大的空间
我试过:
- 通过
QMetaObject::invokeMethod()
在ctor和中调用QDialog::resize()
,将高度降低30(去掉QGroupBox
的大小)但那没有任何作用。
- 调用
QDialog::adjustSize()
(也在 ctor 中并通过 QMetaObject::invokeMethod()
)但这只会增加两个维度(就像疯狂的大!)。
- 将
QDialog
的 "Vertical Policy" 从 "Preferred"(无论那是什么意思)更改为 "Minimum",但这没有任何作用。
QDialog
具有网格布局。
编辑:我注意到在主要 QGroupBox
的上方和下方有这些 verticalSpacers
。无论我将它们的策略和大小提示设置为什么都没有区别——当我调用 adjustSize()
时,它们仍然使整个 window 非常大。删除它们会使 adjustSize()
获得正确的高度,但宽度仍然太大。删除它们而不调用 adjustSize()
会导致主要 QGroupBox
保持相同的大小,并且不会因为删除它的一些子项而缩小。
我 运行 Qt 4.8 Ubuntu 16.04.
您可以在对话框布局上使用 QLayout::setSizeConstraint
以强制其根据其内容自动调整大小,使用 QLayout::SetFixedSize
或 QLayout::SetMinAndMaxSize
作为参数(后者允许用户调整大小对话)。
对于 SetMinAndMaxSize
,您可能还需要更改主要 QGroupBox
布局上的 属性,或者至少将其垂直布局策略设置为 Maximum
或 Fixed
.
我有一个带有嵌套 QGroupBox
的 QDialog
,它可以在对话的构造函数中删除(通过各种 QDialog
方法,例如 hide()
、setVisible()
和 setHidden()
)。不幸的是,当我删除它时,对话框保持相同的大小。有趣的是,主要的 QGroupBox
(带有嵌套 QGroupBox
的那个)缩小了,但 window 的其余部分没有缩小。因此,主要 QGroupBox
.
我试过:
- 通过
QMetaObject::invokeMethod()
在ctor和中调用QDialog::resize()
,将高度降低30(去掉QGroupBox
的大小)但那没有任何作用。 - 调用
QDialog::adjustSize()
(也在 ctor 中并通过QMetaObject::invokeMethod()
)但这只会增加两个维度(就像疯狂的大!)。 - 将
QDialog
的 "Vertical Policy" 从 "Preferred"(无论那是什么意思)更改为 "Minimum",但这没有任何作用。
QDialog
具有网格布局。
编辑:我注意到在主要 QGroupBox
的上方和下方有这些 verticalSpacers
。无论我将它们的策略和大小提示设置为什么都没有区别——当我调用 adjustSize()
时,它们仍然使整个 window 非常大。删除它们会使 adjustSize()
获得正确的高度,但宽度仍然太大。删除它们而不调用 adjustSize()
会导致主要 QGroupBox
保持相同的大小,并且不会因为删除它的一些子项而缩小。
我 运行 Qt 4.8 Ubuntu 16.04.
您可以在对话框布局上使用 QLayout::setSizeConstraint
以强制其根据其内容自动调整大小,使用 QLayout::SetFixedSize
或 QLayout::SetMinAndMaxSize
作为参数(后者允许用户调整大小对话)。
对于 SetMinAndMaxSize
,您可能还需要更改主要 QGroupBox
布局上的 属性,或者至少将其垂直布局策略设置为 Maximum
或 Fixed
.