0

我有一个指向 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() 和迭代器已设置好,但我不确定如何获取文本。

4

2 回答 2

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++运算符 wiki

于 2013-02-03T02:06:22.650 回答
1

你为什么使用迭代器?Qt 有一个不错的foreach循环,可以为您完成这些工作并简化语法:

QList<QLineEdit *> boxes = ui->gridLayoutWidget->findChildren<QLineEdit *>();

foreach(QLineEdit *box, boxes) {
    qDebug() << box->text();
}
于 2013-02-03T02:35:45.837 回答