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.

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top