Rimuovere un sublayout in qt?
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.
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?