Entfernen eines sublayout in qt?
Frage
In PyQt 4.5 habe ich ein Layout in einem anderen Layout. Ich möchte die sublayout von seinem übergeordneten entfernen und verstecken es. Ich kann sagen, parent_layout.removeItem(child_layout)
das Layout von der übergeordneten zu entfernen, aber es zeigt immer noch auf dem Widget. Ich kann keinen Weg finden, um es in einem Schritt zu verbergen, als QLayout
keine hide()
Methode hat wie QWidget
der Fall ist.
Lösung
Die einfache Lösung wäre, eine innere Widget zu haben, nicht eine innere Layout. Sie könnten das Layout weisen Sie auf das Widget wünschen, dann einfach entfernen / verstecken das Widget, wenn Sie so tun möchten. Eine gute Faustregel ist, wenn Sie wollen einfach nur anordnen, wie Widgets erscheint, dann ein Layout verwenden; wenn Sie ausblenden möchten / zeigen sie als Gruppe, ein Widget verwenden.
Andere Tipps
Mit etwas Hilfe von Flupke auf #qt
, kam ich mit:
for i in range(0, child_layout.count()):
child_layout.itemAt(i).widget().hide()
parent_layout.removeItem(child_layout)
, die alle Kinder Layout der Kinder übernimmt Widgets sind. Gibt es eine einfachere Lösung?