Como encontrar widgets de um determinado tipo em um QLayout?

Eu sou capaz de encontrar oQRadioButton deste jeito:

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

Mas não gosto dessa maneira de iterar sobre elementos e gostaria de usar oforeach&nbsp;construir. Minha primeira tentativa falha:

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

O problema é que oui->verticalLayout->findChildren<QRadioButton*>()&nbsp;retorna zero elementos. Também não retorna elementos comfindChildren<QObject*>(). Alguém por favor pode explicar esse comportamento?

Nota:&nbsp;o título deesta&nbsp;A pergunta é quase idêntica à minha, mas está relacionada ao python Qt e não contém nenhuma informação útil para mim.

Filhos vs elementos?

Experimentalmente, achei queui->verticalLayout->children().count()&nbsp;retorna zero onde, comoui->verticalLayout->count()&nbsp;retorna o número de elementos que tenho noverticalLayout. Isso implica queitemAt(i)&nbsp;efindChild<QRadioButton*>()&nbsp;não acesse a mesma lista. Examinando a documentação do Qt emchildren()&nbsp;não me ajudou.

Alguém pode me indicar um bom material sobre os conceitos de pais filhos do Qt? Estou assumindo que isso não tem nada a ver com acessar objetos aninhados, que é o que estou tentando realizar.

Editar

Conforme sugerido por Kuba Ober, as respostas paraessa questão&nbsp;contém informações valiosas sobre outro tópico, enquanto sua resposta esclarece minha pergunta sobre filhos de layout. Portanto, essa não é uma pergunta duplicada.