Как найти виджеты заданного типа в QLayout?

Я могу найтиQRadioButton сюда:

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

Но мне не нравится этот способ перебора элементов, и я хотел бы использоватьforeach построить. Моя первая попытка не удалась:

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

Проблема в том, чтоui->verticalLayout->findChildren<QRadioButton*>() возвращает ноль элементов. Он также не возвращает элементов сfindChildren<QObject*>(), Может кто-нибудь объяснить, пожалуйста, это поведение?

Замечания: названиеэтот Вопрос почти идентичен моему, но он связан с Python Qt и не содержит никакой полезной информации для меня.

Дети против стихий?

Экспериментально я понял, чтоui->verticalLayout->children().count() возвращает ноль, где какui->verticalLayout->count() возвращает количество элементов, которые у меня есть вverticalLayout, Это подразумевает, чтоitemAt(i) а такжеfindChild<QRadioButton*>() не получить доступ к тому же списку. Глядя на документацию Qt поchildren() не помог мне.

Может ли кто-нибудь указать мне хороший материал о концепциях дочерних родителей Qt? Я предполагаю, что это не имеет ничего общего с доступом к вложенным объектам, чего я и пытаюсь достичь.

редактировать

По предложению Кубы Обер, ответы наэтот вопрос содержит ценную информацию по другой теме, тогда как его ответ проясняет мой вопрос о детях верстки. Таким образом, это не повторяющийся вопрос.

Ответы на вопрос(1)

Ваш ответ на вопрос