Domanda

In PyQt 4.5, ho un layout all'interno di un altro layout. Mi piacerebbe rimuovere il sublayout dal suo genitore, e nasconderlo. Posso dire parent_layout.removeItem(child_layout) per rimuovere il layout dal suo genitore, ma mostra ancora sul widget. Non riesco a trovare un modo per nasconderlo in un unico passaggio, come QLayout non ha un metodo hide() come QWidget fa.

È stato utile?

Soluzione

La soluzione più semplice sarebbe quella di avere un widget interno, non una disposizione interna. Si potrebbe assegnare il layout che si desidera al widget, poi basta rimuovere / nascondere il widget quando si desidera farlo. Una buona regola è che se si desidera solo per concordare il widget appaiono, quindi utilizzare un layout; se si desidera nascondere / mostrare loro come un gruppo, utilizzare un widget.

Altri suggerimenti

Con un po 'di aiuto da Flupke su #qt, mi si avvicinò con:

for i in range(0, child_layout.count()):
  child_layout.itemAt(i).widget().hide()
parent_layout.removeItem(child_layout)

che assume tutti i bambini del bambino di layout sono i widget. C'è una soluzione più semplice?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top