从 Qt C++ 中动态创建的 Qline 编辑中获取文本值
Getting text values from dynamically created Qline edits in Qt c++
我已经成功创建了一组 QlineEdits
并为每个 LineEdit
分配了一个对象名称,但不幸的是,当我尝试读取并将它们放入 QStringList
时,我收到一条错误消息:
"Textbox was not declared in this scope"
我的代码如下:
for(int i=0;i<5;i++){
f1 = new QFrame();
f2 = new QFrame();
f3 = new QFrame();
a= new QLabel(f1);
b=new QLineEdit(f2);
c=new QLineEdit(f3);
QString oName= QString::number(i);
b->setObjectName("Textbox"+oName);
ui->verticalLayout->addWidget(f1);
ui->verticalLayout_2->addWidget(f2);
ui->verticalLayout_3->addWidget(f3);
a->setText(newList[i]);
}
从按钮点击事件中我不会获取动态创建的每个文本 QLineEdits
!
void NewOrders::on_pushButton_2_clicked()
{
for(int i=0;i<getList.size();i++){
QString oName= QString::number(i);
getList<<(ui->("Textbox"+oName)->text());
}
}
这里getlist
和newlist
是QStirngLists
已经定义为public!
我该如何纠正这个问题?
要通过 objectName
获取对象,您必须使用 findChild
void NewOrders::on_pushButton_2_clicked()
{
for(int i=0;i<5;i++){
QLineEdit *le = findChild<QLineEdit*>(QString("Textbox%1").arg(i));
if(le){
getList<<le->text();
}
}
}
我已经成功创建了一组 QlineEdits
并为每个 LineEdit
分配了一个对象名称,但不幸的是,当我尝试读取并将它们放入 QStringList
时,我收到一条错误消息:
"Textbox was not declared in this scope"
我的代码如下:
for(int i=0;i<5;i++){
f1 = new QFrame();
f2 = new QFrame();
f3 = new QFrame();
a= new QLabel(f1);
b=new QLineEdit(f2);
c=new QLineEdit(f3);
QString oName= QString::number(i);
b->setObjectName("Textbox"+oName);
ui->verticalLayout->addWidget(f1);
ui->verticalLayout_2->addWidget(f2);
ui->verticalLayout_3->addWidget(f3);
a->setText(newList[i]);
}
从按钮点击事件中我不会获取动态创建的每个文本 QLineEdits
!
void NewOrders::on_pushButton_2_clicked()
{
for(int i=0;i<getList.size();i++){
QString oName= QString::number(i);
getList<<(ui->("Textbox"+oName)->text());
}
}
这里getlist
和newlist
是QStirngLists
已经定义为public!
我该如何纠正这个问题?
要通过 objectName
获取对象,您必须使用 findChild
void NewOrders::on_pushButton_2_clicked()
{
for(int i=0;i<5;i++){
QLineEdit *le = findChild<QLineEdit*>(QString("Textbox%1").arg(i));
if(le){
getList<<le->text();
}
}
}