【问题标题】:Getting text values from dynamically created Qline edits in Qt c++从 Qt c++ 中动态创建的 Qline 编辑中获取文本值
【发布时间】:2017-09-25 08:43:54
【问题描述】:

我成功创建了一组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 已经被定义为公开! 我该如何纠正?

【问题讨论】:

    标签: c++ qt dynamic gettext qlineedit


    【解决方案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();
          }
        }
    }
    

    【讨论】:

    • if 语句中的“w”是什么?
    • @KasunKarunarathna 这是一个错误,更新我的答案
    • thanx nate 我会试试这个看看!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多