Qt中勾选框有两种,圆形按钮勾选框QRadioButton和小方块勾选框QCheckBox,虽然都继承自QAbstractButton但他们用途不同。
QRadioButton
(0)简介
QRadioButton
是 Qt 框架中的一个控件,用于创建和显示单选按钮。用户可以从一组选项中选择一个,每当选择一个新的选项时,之前选择的选项将会自动取消选择。
(1)自动分组
QRadioButton通常用来一组具有互斥关系的勾选框,即多个里面只能选择一个,选择“开心”了,在选择“李四”时,“开心”勾选状态会自动被取消。
在一个容器内部的所有QRadioButton自动被分为一个组。如果要上面4个分为2组,需要放在2个不同的widget中。会被自动分2组。
(2)通过代码设置分组
QRadioButton *radioButton1 = new QRadioButton("Option 1", this);
QRadioButton *radioButton2 = new QRadioButton("Option 2", this);
QButtonGroup *buttonGroup = new QButtonGroup(this);
buttonGroup->addButton(radioButton1, 1);
buttonGroup->addButton(radioButton2, 2);
connect(buttonGroup, &QButtonGroup::buttonClicked, this, &MyClass::onRadioButtonClicked);
void MyClass::onRadioButtonClicked(int id) {
QRadioButton *selectedRadioButton = buttonGroup->button(id);
// 处理选中的单选按钮
}
(3)选中状态
具有选中(checked)和未选中(unchecked)两种状态。
(4)用法总结
(1)勾选框被点击,会发出clicked信号,是否需要绑定此信号处理,根据业务处理
(2)需要时时影响的,绑定信号处理。比如特殊的考试,每页一道题,选项勾选完自动翻页。
(3)不需要时时影响,如考试页面20道题,等全部完成点击交卷按钮后再去获取每道题的所有勾选框,验证答案
通过 bool isChecked()判断是否被勾选
2、QCheckBox
(0)简介
QCheckBox
是 Qt 框架中的一个控件,用于创建和显示复选框。用户可以通过点击复选框来选择或取消选择一个选项
(1)选中状态
勾选状态判断是个枚举值:未勾选、部分选中半勾选、勾选;三态
enum CheckState { Unchecked, PartiallyChecked, Checked };
默认只有2种,未勾选和勾选。开启三态模式需要设置。
启用或禁用三态行为:setTristate(bool enable);
获取勾选状态Qt::CheckState checkState() const;
设置勾选状态 void setCheckState(Qt::CheckState state);
当勾选状态改变时,会发出信号void stateChanged(int);
(2)用法
QCheckBox *checkBox = new QCheckBox("Remember me", this);
checkBox->setChecked(true); // 默认选中
connect(checkBox, &QCheckBox::clicked, this, &MyClass::onCheckBoxClicked);
void MyClass::onCheckBoxClicked(bool checked) {
if (checked) {
// 处理选中状态
} else {
// 处理未选中状态
}
}