Qt - Löscht alle Widgets aus dem Layout eines QWidgets

9

Ich habe ein QWidget in einem Dialog. Im Verlauf des laufenden Programms werden mehrere QCheckBox * -Objekte wie folgt zum Layout hinzugefügt:

%Vor%

Dies funktioniert für alle Kontrollkästchen. Allerdings habe ich auch eine QPushButton namens "clear" in meinem Dialog, die wenn sie gedrückt wird, sollte alles aus myWidget leeren, so dass es leer ist, wie es vor jedem der QCheckboxes hinzugefügt wurde. Ich habe mich online und in den Dokumenten umgesehen, aber ich habe Schwierigkeiten, einen Weg zu finden, dies zu tun. Ich fand diese Frage, die meiner Meinung nach meinem Problem ähnlich war, und versuchte ihre Lösung wie das:

%Vor%

Dies schien jedoch nichts zu tun. Es ist erwähnenswert, dass ich nicht sicher bin, ob dies korrekt aus seiner Antwort übersetzt wird; Es war ein bisschen unklar, wie die gegebene Funktion implementiert werden sollte, also machte ich meine bestmögliche Vermutung. Wenn jemand weiß, was ich ändern kann, um es funktionieren zu lassen (oder nur eine andere Art, die funktionieren würde), würde es sehr geschätzt werden.

    
thnkwthprtls 25.03.2014, 18:57
quelle

3 Antworten

6

Das Wunderbare an Layouts ist, dass sie das Löschen eines Widgets automatisch behandeln. Alles, was Sie wirklich brauchen, ist über die Widgets zu iterieren, und Sie sind fertig. Da Sie alle untergeordneten Elemente eines bestimmten Widgets löschen möchten, tun Sie Folgendes:

%Vor%

Sie brauchen sich überhaupt keine Gedanken über Layouts zu machen. Dies funktioniert unabhängig davon, ob die Kinder von einem Layout verwaltet wurden oder nicht.

Wenn Sie wirklich korrekt sein möchten, müssen Sie die Widgets ignorieren, die untergeordnete Widgets sind, aber eigenständige Fenster sind. Dies wäre der Fall, wenn dies allgemeingültig wäre Bibliothekscode:

%Vor%

Alternativ können Sie nur die untergeordneten Elemente löschen, die von einem bestimmten Layout und seinen Unterlayouts verwaltet werden:

%Vor%     
Kuba Ober 25.03.2014, 21:42
quelle
9

Sie können dies versuchen:

%Vor%     
Nejat 25.03.2014 19:07
quelle
1

Wenn Sie eine Widget-Hierarchie haben, die aus kaskadierten Layouts besteht, die Widgets enthalten, sollten Sie besser folgendes tun:

Schritt 1: Lösche alle Widgets

%Vor%

Schritt 2: Löschen Sie alle Layouts

%Vor%

Nach Schritt 2 sollte Ihr MYTOPWIDGET sauber sein.

    
boto 21.10.2016 12:34
quelle

Tags und Links