标题:动态按钮如何调用
作者:果冻33
日期:2021-03-09 18:18
内容:
/* 动态生成按钮到 horizontalLayout */
on_actionDelBtn_triggered();//先删除已有按钮
QPushButton *btn;
for (int i = 0; i < Number; ++i)
{
btn = new QPushButton(QString::number(i + 1),this);
btn->setGeometry(10 + 10 * i,5,2,8);
btn->setStyleSheet("background-color: rgb(170, 0, 255);");
ui->horizontalLayout->addWidget(btn);
connect(btn,SIGNAL(clicked()),this,SLOT(on_actionMeas_triggered()));//动态生成连接函数
}
问题:以上代码生成的按钮如何用代码调用clicked()?用代码实现界面上类似ui->btn->click();这样的调用。
#1 [liudianwu 03-09 18:34]
你把它存到一个QList listBtn 中不就行了额
#2 [20091001753 03-09 18:42]
#3 [果冻33 03-09 22:48]
QList btnlist;//保存动态生成的按钮。
/* 动态生成按钮到 horizontalLayout */
on_actionDelBtn_triggered();//先删除已有按钮
QPushButton *btn;
for (int i = 0; i < Number; ++i)
{
btn = new QPushButton(QString::number(i + 1),this);
btn->setGeometry(10 + 10 * i,5,2,8);
btn->setStyleSheet("background-color: rgb(170, 0, 255);");
btnlist.append(btn);
ui->horizontalLayout->addWidget(btn);
connect(btn,SIGNAL(clicked()),this,SLOT(on_actionMeas_triggered()));//动态生成连接函数
}
下面才是我想要的结果。用代码调用clicked()
调用:
btnlist[3]->click();//调用第4个按钮
btnlist->setFocus();//动态按钮获得焦点
本来想了另一个办法是再增加一个带参数的connect连接来实现。貌似和目前这个办法差不多要多写几句代码。明天再验证一下。
感谢两位版主帮助。