如何在QT中移除子布局?

3 投票
2 回答
2396 浏览
提问于 2025-04-15 16:40

在 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

简单的解决办法是使用一个内部的小部件,而不是内部的布局。你可以把想要的布局设置给这个小部件,然后在需要的时候直接把这个小部件移除或者隐藏掉。一个好的经验法则是,如果你只是想安排小部件的显示方式,就用布局;如果你想把它们作为一组隐藏或显示,就用小部件。

撰写回答