所以我有一个对话框,它由一个QGridLayout
包含两列小部件(标签和组合框)的对话框组成。根据组合框的选择,某些行可能会被隐藏。
我发现在显示/隐藏组合框时进行对话框调用self.layout().setSizeConstraint(QLayout.SetFixedSize)
会使对话框相应地改变大小。
但后来我意识到布局仍然显示空行的垂直间距,从而使对话框在这里和那里显示太多空间。
我怎样才能摆脱这个?有没有办法让布局调整大小以仅显示具有可见小部件的行的垂直间距?
我想我找到了解决方案。当一个小部件被隐藏时,使用QVBoxLayout
而不是以QGridLayout
某种方式使小部件及其垂直间距消失。
一旦可见性设置为并在您需要将其放回布局中时使用,您可能需要使用QLayout::takeAt ( int index )
来取出该项目。false
QLayout::addItem ( QLayoutItem * item )
请记住,如果一个项目被删除,其他项目将被重新编号。因此,您必须相应地计划您要做什么。请参阅文档。