Zugriff auf die untergeordneten UI-Elemente in einer Qt-Benutzeroberfläche
Habe ich den vorgegebenen UI (nennen wir es myUI) mit dem Qt-designer und verwenden es für meine Anwendungen. Ich brauche Zugriff auf alle der sub-widgets (QToolButton
s) in myUI. Ich möchte alle subwidgets als QObjectList
.
Gibt es eine Möglichkeit, dies zu tun?
Den QObject::children()
funktioniert hier nicht, weil die Qt UI Compiler bei der Umwandlung der .ui-Datei in eine C++ - Klasse, nicht definieren die ui_myUI Klasse als Unterklasse von jedem QObject
abgeleiteten Klasse. Gibt es eine Möglichkeit, um ihn zu zwingen, dies zu tun, und verwenden Sie dann die children()
Funktion?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Call
children()
auf die top-level-widget-Instanz.Vorausgesetzt, Ihre top-level-widget heißt "tlWidget':
myUI->tlWidget->children()
In der Regel, was passiert, ist, dass Sie entweder Erben von der UI-Klasse, oder Sie haben es als Mitglied und rufen Sie die Methode setupUi, senden
this
als parameter. Die Standard-Qt-Creator/Designer ist, um es als ein Mitglied, benanntui
.Können Sie diesem Mitglied, um Zugriff auf alle widgets, die im Formular definiert wurden.
QObjectList
. Ist das möglich?Könnten Sie dies interessant finden:
QObjectList
mitthis->children()
Wie nutzt du dein UI ?
(a) so etwas wie:
(b) oder eher etwas wie:
Die Lösung ist ähnlich für beide Fälle angenommen, die Sie aufrufen
setupUi(this)
oderui.setupUi(this)
im Konstruktor von MyWidgetsetupUi(QWidget* p) registriert jedes widget auf die Benutzeroberfläche, die als Kinder von QWidget p,
so können Sie leicht auf Sie zugreifen, indem Sie den Aufruf der Kinder () - Funktion von p: