Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
前言:
QCheckBox提供了一个带文本标签的复选框,QCheckBox(复选框)和QRadioButton(单选按钮)都是选项按钮,它们都可以在开(选中)或者关(未选中)状态之间切换。它们两个的区别是:单选按钮实现“多选一”;复选框实现“多选多”。
QCheckBox类常用的方法:
- setChecked():设置复选框的状态:True表示选中,False表示取消选中。
- setText():设置复选框标签显示的文本。
- text():返回复选框标签显示的文本。
- isChecked():获取复选框是否被选中。
- setTriState():设置复选框为一个三态复选框。
- setCheckState():三态复选框的状态设置。
注: 三态,就是除了打勾和不打勾两个状态外,还有一个半选中状态,复选框的方框内填充了颜色,这个状态不常用。
QCheckBox类的使用:
//动态创建两个QCheckBox
QCheckBox *checkbox1 = new QCheckBox("apple", this);
QCheckBox *checkbox2 = new QCheckBox("orange", this);
//连接复选框选中状态改变时出发的信号stateChanged()和对应的槽函数
connect(checkBox1, SIGNAL(stateChanged(int)), this, SLOT(slotStateChanged_apple(int)));
connect(checkBox2, SIGNAL(stateChanged(int)), this, SLOT(slotStateChanged_orange(int)));
//槽函数的实现
void Widget::slotStateChanged_apple(int state)
{
if(state == Qt::Checked){}
//选中
else if(state == Qt::Unchecked){}
//未选中
}
void Widget::slotStateChanged_orange(int state)
{
if(state == Qt::Checked){}
//选中
else if(state == Qt::Unchecked){}
//未选中
}
槽函数中很简单,判断参数state是否为选中状态,然后分别做对应的处理。
分别实现独占和非独占复选框:
实现非独占复选框: 非独占的意思是一组复选框控件,可以支持多选。创建多个多选框控件,分别连接他们发射的状态改变信号和对应的槽函数,分别处理它们的槽函数,既可实现非独占的复选框。
实现独占复选框: 独占的意思是一组复选框控件实现多选一。通过setExclusive()函数设置按钮组的禁用单选(不支持单选)。
QButtonGroup *check_group = new QButtonGroup(this);
check_group->setExclusive(true);//单选启动
这样button组中的复选框,就被设置为独占模式,实现多选一。