2017-09-25 123 views
1

我已经成功创建了一组Qline编辑,并为每行编辑分配了一个对象名称,但不幸的是,当我尝试读取并将它们导入到QStringList中时,出现错误,提示从Qt中动态创建的Qline editss获取文本值C++

"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]); 

} 

,并从按钮单击事件,我不会得到在动态创建QLine每个文本编辑!

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! 我该如何解决这个问题?

回答

1

打通了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(); 
     } 
    } 
} 
+0

什么if语句是“W”? –

+0

@KasunKarunarathna这是一个错误,更新我的回答 – eyllanesc

+0

thanx奈特我会尝试这个,看看! –

相关问题