Remover um sublayout em qt?
Pergunta
Em PyQt 4.5, eu tenho um layout dentro de outro layout. Eu gostaria de remover o sublayout de seu pai, e escondê-lo. Posso dizer parent_layout.removeItem(child_layout)
para remover o layout de seu pai, mas ele ainda mostra no widget. Não consigo encontrar alguma maneira de escondê-lo em uma única etapa, como QLayout
não tem um método hide()
como QWidget
faz.
Solução
A solução mais fácil seria ter um widget interior, e não uma disposição interior. Você pode atribuir o layout você deseja o widget, em seguida, basta remover / ocultar o widget quando você quiser fazê-lo. Uma boa regra de ouro é se você só quer organizar como aparecem widgets, em seguida, usar um layout; se você deseja ocultar / mostrar a eles como um grupo, use um widget.
Outras dicas
Com a ajuda de flupke em #qt
, eu vim com:
for i in range(0, child_layout.count()):
child_layout.itemAt(i).widget().hide()
parent_layout.removeItem(child_layout)
Que assume todas as crianças do layout de criança são widgets. Existe uma solução mais simples?