Qt 序列化按钮

 

控制软件中常会出现大量功能相似的按钮控件,如图有12个机器使能按钮,如果逐一设置槽函数,重复工作量太大。通过序列化按钮,可以极大减少代码量。

通过QList容器存放12个按钮

//序列化通道按钮
QList<QPushButton*> pushButtonList;
pushButtonList = pushButtonList << ui->target1_pushButton
                                << ui->target2_pushButton
                                << ui->target3_pushButton
                                << ui->target4_pushButton
                                << ui->target5_pushButton
                                << ui->target6_pushButton
                                << ui->target7_pushButton
                                << ui->target8_pushButton
                                << ui->target9_pushButton
                                << ui->target10_pushButton
                                << ui->target11_pushButton
                                << ui->target12_pushButton;

 分别连接12个按钮到槽函数,这里结合了C++11 的Lambda


//绑定12个使能按钮槽函数
    for(int i = 0; i < 12; i++){
        connect(pushButtonList[i], &QPushButton::toggled, [=](bool s){
          on_target_pushButton_toggled(i, s);  // 改变第i个端口的输出电平为s
        });
    }

在槽函数中设置按钮的功能

void MainWindow::on_target_pushButton_toggled(int i, bool s)
{
    if(s){
        qDebug() << "t" + QString::number(i+1) +" enable!";
        if(targetList[i]->is_connected()){
            set_panel_green(i+1);
            pushBtnFlag++;
            if(pushBtnFlag != 0){
                ui->upDown_groupBox->setEnabled(true);
                ui->turn_groupBox->setEnabled(true);
            }
        }
    }
    else{
        qDebug() <<  "t" + QString::number(i+1) +" disable!";
        unset_panel_green(i+1);
        pushBtnFlag--;
        if(pushBtnFlag == 0){
            ui->upDown_groupBox->setDisabled(true);
            ui->turn_groupBox->setDisabled(true);
        }
    }
}

综上,即可实现对12个按钮的序列化控制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值