QT一次性连接多个按钮槽函数


前言

场景:如果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
  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值