Как получить текст из объекта 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 () и итератор настроены нормально, но я не уверен, как получить текст.

0

Решение

Пытаться:

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 ++ оператор вики

1

Другие решения

Почему вы используете итераторы? Qt имеет приятный foreach цикл, который делает это за вас и упрощает синтаксис:

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

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

По вопросам рекламы [email protected]