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

なぜイテレータを使用しているのですか?Qtには、foreachこのような処理を実行し、構文を単純化する優れたループがあります。

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

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

試す:

for(QList<QLineEdit *>::iterator it = boxes.begin(); it != boxes.end(); it++)
{
     qDebug() << (*it)->text();  
}

以下のコードと同じですが、中間ポインタを1つ保存するだけです。

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 に答える