在我的项目中,我有一个组框,其中有几个元素可能需要隐藏,上面和下面有其他元素。如果我用setHidden(true)隐藏这些元素,元素被隐藏,但在其他元素之间留下一个大的空间。
在隐藏了这些元素之后,我怎样才能压缩组框,这样就不会有那么大的空间了?
原因不在invalidate()中。这是因为你有一个不正确的布局在你的GroupBox内容。如果您使用hide()或show()方法,任何QWidget QT都会自动使最顶层的父控件失效,这些父控件可能会受到可见性变化的影响。所以在你的情况下,QGroupBox缺少布局,所以你隐藏元素,没有什么可以改变的QGroupBox几何形状,这就是为什么你没有看到预期的拉伸。
如果没有代码,就很难猜测缺少了什么。
你有没有试过QLayout::invalidate()
在隐藏盒子后持有你的组框的布局?