从QT C 中动态创建的Qline编辑中获取文本值

Getting text values from dynamically created Qline edits in Qt c++

本文关键字:获取 编辑 取文本 Qline 创建 QT 动态      更新时间:2023-10-16

我已经成功地创建了一组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());
 }
}

这里的getlistnewlistQStirngLists已定义为公共!我该如何纠正?

要通过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();
      }
    }
}