代码之家  ›  专栏  ›  技术社区  ›  Kasun Karunarathna

从Qt c中动态创建的Qline编辑中获取文本值++

  •  1
  • Kasun Karunarathna  · 技术社区  · 7 年前

    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 已定义为公共! 我怎样才能纠正这个问题?

    1 回复  |  直到 7 年前
        1
  •  1
  •   eyllanesc Yonghwan Shin    7 年前

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