2017-09-13 90 views
1

在for循環中,我可以構造一個字符串。通過字符串獲取小部件

foreach (...) { 
    QString str = "pushButton" + QString::number(count); 
    // this gives pushButton1 

    // Now I want to get the button widget that has this string as it's variable name 
    // and modify it in some way, e.g. change it's button caption 

    str->setText("New Title"); 

    count ++; 
} 

這可能嗎?如果是這樣,那麼如何

編輯:以下是我創建的按鈕

for (int i=0; i<total; i++) { 
    QPushButton *btn = new QPushButton(); 
    btn->setObjectName("pushButton" + QString::number(i)); 
    ui->horizontalLayout->addWidget(btn); 
} 
+0

您是如何創建按鈕的? – eyllanesc

+0

Hi @eyllanesc。我在循環中以編程方式創建它,並用循環變量分配它們的名稱。 – GeneCode

+0

您是否已將父級傳遞給按鈕? – eyllanesc

回答

4

你可以通過parentobjectName按鈕,在你的情況下,父親是這樣的,所以你應該使用下列內容:

QWidget* p = ui->horizontalLayout->parentWidget(); 

for(int count=0; count<total; count++){ 
    const QString str = "pushButton" + QString::number(count); 
    QPushButton* btn = p->findChild<QPushButton *>(str); 
    btn->setText("someText"); 
} 
+0

Thx它的工作原理! – GeneCode

相關問題