Ich habe ein QWidget
in einem Dialog. Im Verlauf des laufenden Programms werden mehrere QCheckBox *
-Objekte wie folgt zum Layout hinzugefügt:
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:
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.
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%