我有一个指向QLineEdit对象的指针数组,我想迭代它们并输出它们持有的文本。看起来我的指针有问题..
QList<QLineEdit *> boxes = ui->gridLayoutWidget->findChildren<QLineEdit *>();
for(QList<QLineEdit *>::iterator it = boxes.begin(); it != boxes.end(); it++)
{
qDebug() << **it->text(); //not sure how to make this correct
}
我可以用qDebug输出对象和名称,所以我知道findChildren()和迭代器设置正常,但我不知道如何获取文本。
答案 0 :(得分:1)
尝试:
for(QList<QLineEdit *>::iterator it = boxes.begin(); it != boxes.end(); it++)
{
qDebug() << (*it)->text();
}
它与下面的代码相同,只需保存一个中间指针:
for(QList<QLineEdit *>::iterator it = boxes.begin(); it != boxes.end(); it++)
{
QlineEdit* p= *it; // dereference iterator, get the stored element.
qDebug() << p->text();
}
operator->
的优先级高于operator*
,请参阅C ++ operator wiki
答案 1 :(得分:1)
为什么使用迭代器? Qt有一个很好的foreach
循环,可以为你完成这些工作并简化语法:
QList<QLineEdit *> boxes = ui->gridLayoutWidget->findChildren<QLineEdit *>();
foreach(QLineEdit *box, boxes) {
qDebug() << box->text();
}