Вы либо должны сохранять дескрипторы созданных вами объектов:
// definition:
QList<QLineEdit*> lineEdits;
QList<QComboBox*> combos;
Эти списки должны быть членами класса.
// usage:
for(int i=0; i < runnerList.size() ;i++)
{
//...
lineEdits << lineEdit;
combos << comboBox;
}
Затем вы можетеполучить значения позже:
... = QString(lineEdits[i]->text() + combos[i]->currentText());
Или вы можете найти их по уникальному имени объекта:
ui.verticalLayout->findChild<QLineEdit*>(QString("lineEdit_%1").arg(i))->text();
// I didn't try to compile this code!
Для этого вам нужно дать каждому QLineEdit
/ QComboBox
уникальное имя объекта.
или вы ищете все QLineEdit
с и надеетесь, что их порядок четко определен:
ui.verticalLayout->findChildren<QLineEdit*>("lineEdit")[i]->text();
Отказ от ответственности: это все очень уродливо, но вы должны быть в состоянии увидеть, как это работает.
Независимо от вашего выбора, помните:
Ваша линия
_Numberlabel->setText(QString("First Runner").arg(i+1).arg(runnerList[i][0]).arg(runnerList[i][1]));
содержит ошибку, потому что ваш QString(...)
не содержит заполнителей %1
, %2
, ..., но сопровождается .arg()
вызовами.Это ничего не даст, кроме как создать предупреждение на консоли.