2017-09-25 185 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奈特我會嘗試這個,看看! –

相關問題