Qt - como converter de QObject para elementos de interface do usuário?

Estou trabalhando no Qt 4.7 e tenho um objeto QWidget na minha caixa de diálogo. Eu preciso passar por cada um dos filhos e extrair o texto atual em um QStringList. Todos os outros objetos são QCheckBox, e o restante são QComboBoxes (eu precisaria apenas da parte do texto de ambos). Até agora, a única maneira de pensar em fazer isso seria usar a função children () para obtê-los como QObject * 's e convertê-los, assim:

QStringList textlist;
for(int i = 0; i < ui->myWidget->children().size(); i++)
{
    if(i % 2 == 0)
    {
        QCheckBox *q = (QCheckBox *)ui->myWidget->children().at(i);
        textlist.append(q->text());
    }
    else
    {
        QComboBox *q = (QComboBox *)ui->myWidget->children().at(i);
        textlist.append(q->currentText());
    }
}

No entanto, quando tento usar isso, ele cria e compila corretamente, mas falha quando é executado. Eu verifiquei e as duas classes são subclasses (embora indiretamente através de QAbstractButton e QWidget) de QObject, que é o tipo de objetos na lista ui-> myWidget-> children (), então eu sinto que eles devem ser capazes de transmitir dessa maneira . Eu não trabalhei muito com esse tipo de coisa antes, então não tenho certeza se há uma maneira melhor de fazer isso. Se alguém tiver alguma idéia, seria muito apreciada. Obrigado!

UPDATE: Então, não consigo fazer o casting funcionar dessa maneira ou com o qobject_cast. No entanto, eu descobri que posso ir do QObject para o QWidget e acho que devo poder ir do QWidget aos objetos necessários com dynamic_cast, mas isso também não funciona. Agora eu tenho isso:

QStringList textlist;
for(int i = 0; i < ui->myWidget->children().size(); i++)
{
    QWidget *qw = qobject_cast<QWidget*>(ui->myWidget->children().at(i)
    if(i % 2 == 0)
    {
        QComboBox *q = dynamic_cast<QComboBox*>(qw);
        if(q)
        {
            textlist.append(q->text());
        }
    }
    else
    {
        QCheckBox *q = dynamic_cast<QCheckBox*>(qw);
        if(q)
        {
            textlist.append(q->currentText());
        }
    }
}

Se alguém tiver alguma idéia, agradeceria a ajuda. Obrigado.

UPDATE2: Ainda não encontrei muita coisa online que ajude com isso, então é melhor perguntar também, se há alguma maneira de fazer isso SEM conversão, ou seja, obter os objetos diretamente do QWidget em seu tipo original, eu realmente aprecio isso também. Eu não sou o coração da minha estratégia atual ou algo assim, era apenas a única maneira de pensar em fazê-lo - vou aceitar qualquer coisa que funcione neste momento.

questionAnswers(1)

yourAnswerToTheQuestion