QCheckBox复选框状态设置、信号绑定

    一、QCheckBox有两种设置状态

        1.setCheckState(Qt::Checked);设置状态并且发送信号出去。

        eg:

                for (auto itr = m_mCheckBoxNum.begin(); itr != m_mCheckBox.end(); ++itr)

                {

                        itr.value->setCheckState(Qt::Checked);

                }

        2.setChecked(true);只设置状态不发送信号。

        eg:

                int nCheckBoxCount = 0;

                for (auto itr = m_mCheckBoxNum.begin(); itr != m_mCheckBox.end(); ++itr)

                {

                        if (itr.value()->isChecked())

                        {

                                ++nCheckBoxCount;

                        }

                }

                if (nCheckBoxCount == m_mCheckBoxNum.size())

                {

                        ui->checkBox_HeaderTitle->setChecked(true);

                }

                else

                {

                        ui->checkBox_HeaderTitle->setChecked(false);

                }

二、QCheckBox有两种信号

        1.点击信号clicked

                connect(ui->checkBox_Header, &QCheckBox::clicked, [=] ()

                {

                        qDebug()<<"点击信号!";

                });

        2.状态改变信号stateChanged

                connect(ckb, &QCheckBox::stateChanged, [=] ()

                {

                        qDebug()<<"状态改变信号";

                });

        注意:当两个信号同时都绑定了相关的槽函数,点击选中框同时会触发点击信号(clicked)和状态改变信号(stateChanged)。设置状态改变信号不会触发点击信号。如果只是单纯的使用尽量可以使用点击信号,状态改变信号会产生不必要的逻辑错误。

        为了方便大家更好地理解,我将运行例子和运行结果给大家贴出

connect(ui->checkBox,&QCheckBox::clicked,[=]()
    {
        qDebug()<<"QCheckBox clicked signal!";
    });
    connect(ui->checkBox,&QCheckBox::stateChanged,[=]()
    {
        qDebug()<<"QCheckBox stateChanged signal!";
    });
    connect(ui->pushButton,&QPushButton::clicked,[=](bool state)
    {
        if(state)
        {
            ui->checkBox->setCheckState(Qt::Checked);
        }
        else
        {
            ui->checkBox->setCheckState(Qt::Unchecked);
        }
        qDebug()<<"QPushButton clicked signal!";
    });

点击pushbutton输出结果如下

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值