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.

War es hilfreich?

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top