2009-12-04 5 views
3

Dans PyQt 4.5, j'ai une mise en page dans une autre mise en page. Je voudrais supprimer le sous-calque de son parent, et le cacher. Je peux dire parent_layout.removeItem(child_layout) pour enlever la mise en page de son parent, mais il montre encore sur le widget. Je ne peux pas trouver un moyen de le cacher en une seule fois, car QLayout n'a pas une méthode hide() comme QWidget fait.Supprimer un sous-dénombrement en qt?

Répondre

4

La solution facile serait d'avoir un widget intérieur, pas une disposition intérieure. Vous pouvez assigner la mise en page que vous désirez au widget, puis simplement supprimer/masquer le widget lorsque vous voulez le faire. Une bonne règle est que si vous voulez juste organiser comment les widgets apparaissent, utilisez une mise en page; Si vous voulez les cacher/les montrer en groupe, utilisez un widget.

1

Avec l'aide de flupke sur #qt, je suis venu avec:

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

Ce qui suppose que tous les enfants de la disposition des enfants sont des widgets. Y a-t-il une solution plus simple?