Qt 关于QCheckbox常用信号,绑定信号及获取当前状态

一、 常用的三个信号,{stateChanged(int) clicked() clicked(bool)}

在 Qt 中,QCheckBox 是一个提供复选框功能的小部件,允许用户选择和取消选择一个或多个选项。QCheckBox 提供了几种信号来响应用户的交互,其中 stateChanged(int), clicked(),和 clicked(bool) 是常用的。下面解释这些信号的意义及其用法。

1.stateChanged(int state)

这个信号在复选框的状态改变时发出。状态改变可以是用户交互(如点击复选框改变选中状态),或者是程序通过代码改变复选框状态时触发。

参数:
int state:表示复选框新的状态。它可以是以下值之一:
Qt::Unchecked (0):复选框未被选中。
Qt::PartiallyChecked (1):复选框处于部分选中状态(通常用于具有层级结构的复选框中,表示子项目部分被选中)。
Qt::Checked (2):复选框被完全选中。

用法示例:

connect(checkBox, &QCheckBox::stateChanged, this, [this](int state) {
    if (state == Qt::Checked) {
        qDebug() << "Checkbox is checked.";
    } else if (state == Qt::Unchecked) {
        qDebug() << "Checkbox is unchecked.";
    }
});

2.clicked()

这个信号在复选框被点击时发出,不论状态如何改变。这个信号不带参数,主要用于简单的点击响应,而不关心具体的状态。

用法示例:

connect(checkBox, &QCheckBox::clicked, this, []() {
    qDebug() << "Checkbox was clicked.";
});

3.clicked(bool checked)

这个信号也是在复选框被点击时发出,但它提供一个布尔参数来指示复选框的新状态。

参数:
bool checked:如果复选框现在是选中状态,则为 true;如果未选中,则为 false。

用法示例:

connect(checkBox, &QCheckBox::clicked, this, [](bool checked) {
    if (checked) {
        qDebug() << "Checkbox is now checked.";
    } else {
        qDebug() << "Checkbox is now unchecked.";
    }
});

总结

  1. 使用 stateChanged(int) 时,可以精确到复选框的三种状态变化,适用于需要区分未选中、部分选中和完全选中状态的场景。
  2. 使用无参数的 clicked() 时,仅需要知道复选框被点击,而不关心其状态如何变化。
  3. 使用 clicked(bool) 时,可以直接获得复选框改变后的选中状态(是或否),适用于需要根据复选框的最新状态执行操作的场景。

这些信号为开发者提供了灵活的方式来处理用户与复选框的交互。

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

1.QCheckBox有两种设置状态

  • 1.setCheckState(Qt::Checked);设置状态并且发送信号出去。
for (auto itr = m_mCheckBoxNum.begin(); itr != m_mCheckBox.end(); ++itr)
{
	itr.value->setCheckState(Qt::Checked);
}
  • setChecked(true);只设置状态不发送信号。
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);
}

2.QCheckBox使用clicked与stateChanged的注意事项

  • 点击信号clicked
connect(ui->checkBox_Header, &QCheckBox::clicked, [=] ()
 {
	qDebug()<<"点击信号!";
});
  • 状态改变信号stateChanged
connect(ckb, &QCheckBox::stateChanged, [=] ()
 {
	qDebug()<<"状态改变信号";
 });

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

三、QCheckBox获取当前状态,判断checkbox是否被勾选

使用isChecked()方法

举例:

首先UI设计师上要有这个checkbox的控件

if(ui->checkbox->isChecked()==true)
{
      startTimer(1000);
}

当被勾选后,isChecked() 等于true 。

原文链接:
1.【QT】关于qcheckbox常用的三个信号,{sstateChanged(int) clicked() clicked(bool)}达成巧用

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值