QT一次性连接多个按钮槽函数
文章目录前言一、使用步骤1.初始化2.槽函数总结前言场景:如果QT界面上面有许多按钮,如果一个按钮连接一个信号对应一个槽函数,那么函数太多了,代码结构乱以下是本篇文章正文内容,下面案例可供参考一、使用步骤1.初始化代码如下(示例):void MainWindow::InitForm()//初始化界面{//设置头部区域按钮QList<QPushButton *>pbtns = ui-&g
·
前言
场景:如果QT界面上面有许多按钮,如果一个按钮连接一个信号对应一个槽函数,那么函数太多了,代码结构乱
以下是本篇文章正文内容,下面案例可供参考
一、使用步骤
1.初始化
代码如下(示例):
void MainWindow::InitForm() //初始化界面
{
//设置头部区域按钮
QList<QPushButton *> pbtns = ui->widg_Heade->findChildren<QPushButton *>(); //找到所有按钮
foreach(QPushButton *btn, pbtns) //循环List中所有的按钮
{
qDebug()<<btn;
// btn->iconSize(32,32);
// btn->setCheckable(true);
btn->setChecked(true);
connect(btn,SIGNAL(clicked()),this,SLOT(buttonClick())); //每一个按钮连接槽函数
}
}
2.槽函数
代码如下(示例):
void MainWindow::InitForm() //初始化界面
{
//设置头部区域按钮
QList<QPushButton *> pbtns = ui->widg_Heade->findChildren<QPushButton *>(); //找到所有按钮
foreach(QPushButton *btn, pbtns) //循环List中所有的按钮
{
qDebug()<<btn;
// btn->iconSize(32,32);
// btn->setCheckable(true);
btn->setChecked(true);
connect(btn,SIGNAL(clicked()),this,SLOT(buttonClick())); //每一个按钮连接槽函数
}
}
void MainWindow::buttonClick() //电机按钮的槽函数
{
qDebug()<<"进入槽函数";
QPushButton *bt = (QPushButton *)sender(); //返回这个发射信号控件指针
QString name = bt->text(); //获取控件文本
QList<QPushButton *> pbtns = ui->widg_Heade->findChildren<QPushButton *>(); //找到所有按钮
foreach(QPushButton *btn, pbtns)
{
if(btn == bt)
{
btn->setChecked(true);
}
else{
btn->setChecked(false);
}
}
if(name=="主界面")
{
ui->stackedWidget->setCurrentWidget(ui->stack_main); //显示主界面
}else if(name=="TL系统"){
ui->stackedWidget->setCurrentWidget(ui->stack_tl); //显示主界面
}
}
总结
这里面有一个小问题要注意,在我连接槽函数时候 connect(btn,SIGNAL(clicked()),this,SLOT(buttonClick())); clicked()缺少了(),结果可以编译通过,但是槽函数一直进入不了,我qDebug()以后发现出现这个问题这里就是缺少(),添加以后槽函数可以正常使用 Parentheses expected, signal QPushButton::clicked in更多推荐

所有评论(0)