2017-09-13 73 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

相关问题