Wie finde ich Widgets eines bestimmten Typs in einem QLayout?

Ich kann das @ findQRadioButton diesen Weg

for(int i = 0; i < ui->verticalLayout->count(); i++)
{
    QRadioButton* r = qobject_cast<QRadioButton*>(ui->verticalLayout->itemAt(i)->widget());
    if(r->isChecked())
        //found it!
}

Aber ich mag diese Art des Iterierens über Elemente nicht und möchte das @ verwendforeach konstruieren. Mein erster Versuch schlägt fehl:

foreach(QRadioButton* child, ui->verticalLayout->findChildren<QRadioButton*>())
{
    if(child->isChecked())
        //found it!
}

Problem ist, dass dasui->verticalLayout->findChildren<QRadioButton*>() gibt null Elemente zurück. Es werden auch keine Elemente mit @ zurückgegebefindChildren<QObject*>(). Kann jemand bitte dieses Verhalten erklären?

Hinweis der Titel vonDie question ist fast identisch mit meiner, hat aber etwas mit Python Qt zu tun und enthält keine hilfreichen Informationen für mich.

Kinder vs Elemente?

Experimentell dachte ich, dassui->verticalLayout->children().count() gibt Null zurück, wobei alsui->verticalLayout->count() gibt die Anzahl der Elemente im @ zurüverticalLayout. Dies impliziert, dassitemAt(i) undfindChild<QRadioButton*>() greife nicht auf die gleiche Liste zu. Betrachten Sie die Qt-Dokumentation aufchildren() hat mir nicht geholfen.

Kann mir jemand ein gutes Material zu Qt Child Parent-Konzepten zeigen? Ich gehe davon aus, dass dies nichts mit dem Zugriff auf verschachtelte Objekte zu tun hat, was ich zu erreichen versuche.

Bearbeite

Wie von Kuba Ober vorgeschlagen, die Antworten aufdiese Frag enthält wertvolle Informationen zu einem anderen Thema, während seine Antwort meine Frage zu Kindern mit Layout klarstellt. Das ist also keine doppelte Frage.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage