2016-05-24 2 views

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

+0

Also habe ich Recht, dass es keine implementierte Funktion für diesen Zweck gibt? –

+0

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 –

+0

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