【发布时间】:2017-10-12 01:30:11
【问题描述】:
我有这个QDialog 和一个嵌套的QGroupBox,可以在对话的构造函数中删除(通过各种QDialog 方法,如hide()、setVisible() 和setHidden())。不幸的是,当我删除它时,对话框的大小保持不变。有趣的是,主要的QGroupBox(带有嵌套QGroupBox的那个)缩小了,但窗口的其余部分没有。因此,主要的QGroupBox 周围有很大的空间。
我试过了:
- 在 ctor 中调用
QDialog::resize()和 通过QMetaObject::invokeMethod(),将高度减少 30(删除的QGroupBox的大小),但这无济于事。 - 调用
QDialog::adjustSize()(也在 ctor 中并通过QMetaObject::invokeMethod())但这只会增加两个维度(就像疯了一样大!)。 - 将
QDialog的“垂直政策”从“首选”(无论这意味着什么)更改为“最低”,但这没有任何作用。
QDialog 具有网格布局。
编辑:我注意到在主要QGroupBox 的上方和下方有这些verticalSpacers。无论我设置他们的政策和大小提示都没有区别——当我打电话给adjustSize() 时,他们仍然使整个窗口变得非常大。删除它们会使adjustSize() 获得正确的高度,但宽度仍然太大。删除它们而不调用 adjustSize() 会导致主要的 QGroupBox 保持相同的大小,并且不会由于删除它的一些子项而缩小。
我在 Ubuntu 16.04 上运行 Qt 4.8。
【问题讨论】:
标签: qt layout window-resize qdialog