2012-11-16 65 views
0

所以我有一个包含一个QGridLayout的对话框,它有两列小部件(标签和组合框)。根据组合框的选择,某些行可能被隐藏。如何摆脱Qt中QGridLayout中空行的垂直间距?

我想通过对话框调用self.layout().setSizeConstraint(QLayout.SetFixedSize),因为它显示/隐藏组合框会使对话框相应地改变大小。

但后来我意识到,布局仍然显示空行的垂直间距,从而使对话显示太多的空间在这里和那里。

我该如何摆脱这个?有没有办法让布局调整大小,只显示具有可见小部件的行的垂直间距?

回答

0

您可能需要使用QLayout::takeAt (int index)取出物品,一旦当你需要它放回你的布局可见性设置为false &使用QLayout::addItem (QLayoutItem * item)

请记住,如果一个项目被删除,其他项目将被重新编号。所以你必须计划你做了什么。请参阅documentation

0

我想我找到了解决方案。使用QVBoxLayout而不是QGridLayout以某种方式使小部件的垂直间距在隐藏小部件时消失。