Wie erhalte ich ein übergeordnetes Objekt nach seinem Namen? QWidget::parentWidget()
geht nur eine Ebene höher; Ich brauche eher eine rekursive Suche, die QObject::findChild()
entspricht.Übergeordnetes Widget nach Objektnamen abrufen
1
A
Antwort
3
QWidget
erbt QObject
so QObject::objectName
an alle können QWidgets
Sie den Stammbaum eine freie Funktion etwa wie folgt (beachten Sie, dies ist nicht getestet Code) durch die Schaffung
QWidget* parentByName(QWidget* widget, QString name)
{
widget = parentWidget();
if (widget && widget->objectName() != name)
return parentByName(widget, name);
return widget;
}
Dies wird rekursiv nach oben vorhanden ist Gib entweder das Widget zurück, das du suchst, oder ein nullptr, falls es nicht gefunden werden kann
Also habe ich Recht, dass es keine implementierte Funktion für diesen Zweck gibt? –
Das ist eine Frage, die am besten auf [die Dokumentation] gerichtet ist (http://doc.qt.io/qt-5/qwidget-members.html) - nach "Eltern" suchen und sehen, was Sie –
im ersten Ausschnitt finden, tat Sie meinen 'return parent-> parentByName (name);' für den rekursiven Aufruf? sonst rufen Sie einfach die gleiche Funktion mit dem gleichen Parameter an, bis der Stack überläuft – user463035818