2013-02-03 42 views
0

我有一個指向QLineEdit對象的指針數組,我想遍歷它們並輸出它們保存的文本。好像我在與指針的麻煩..如何從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()和迭代器設置好了,但我不知道如何獲取文本。

回答

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

+0

就是這樣。括號加什麼? – Ci3

+0

由於C++運算符優先級,您首先需要解引用迭代器。 – billz

1

你爲什麼使用迭代器? Qt有很好的foreach循環,它可以爲你提供這些東西並簡化語法:

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

foreach(QLineEdit *box, boxes) { 
    qDebug() << box->text(); 
} 
+0

謝謝,我不知道! – Ci3