如何在QT中移除子布局?
在 PyQt 4.5 中,我有一个布局里面还有另一个布局。我想把这个子布局从它的父布局中移除,并且把它隐藏起来。我可以用 parent_layout.removeItem(child_layout)
这个命令把子布局从父布局中移除,但它在界面上还是会显示出来。我找不到一种方法可以一步到位地把它隐藏,因为 QLayout
并没有像 QWidget
那样的 hide()
方法。
2 个回答
1
在#qt
频道里,得到了flupke的帮助,我想出了这个:
for i in range(0, child_layout.count()):
child_layout.itemAt(i).widget().hide()
parent_layout.removeItem(child_layout)
这个代码假设所有子布局里的元素都是小部件。有没有更简单的解决办法呢?
4
简单的解决办法是使用一个内部的小部件,而不是内部的布局。你可以把想要的布局设置给这个小部件,然后在需要的时候直接把这个小部件移除或者隐藏掉。一个好的经验法则是,如果你只是想安排小部件的显示方式,就用布局;如果你想把它们作为一组隐藏或显示,就用小部件。