背景
使用 QButtonGroup 可以把一组 QRadioButton 控件进行统一管理,不要挨个设置信号槽的连接。
除了可以添加 QRadioButton 对象,也可以添加其他按钮, 如可以添加 QheckBox 以设置为单选的效果。
使用分组
①.概述
通过 QButtonGroup 的成员函数 addButton 可以添加 QRadioButton 对象,并指定其编号。
QButtonGroup * group = new QButtonGroup(this);
group->addButton(ui.radioButton, 0);
group->addButton(ui.radioButton_2, 1);
group->addButton(ui.radioButton_3, 2);
group->addButton(ui.radioButton_4, 3);
②.通过编号访问
group->button(1)->setChecked(true);
③.获取分组的选择结果
group->button(1)->setChecked(true);
qDebug() << "当前选择的编号 " << group->checkedId();
信号响应
①.Toggled 信号
connect(group, static_cast<void(QButtonGroup::*)(int, bool)>(&QButtonGroup::buttonToggled), [&](int index, bool checked) {
qDebug() << "编号为 " << index << "选择状态变更为 " << checked;
});
②.Clicked 信号
connect(group, static_cast<void(QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), [&](int index) {
qDebug() << "单击编号为 " << index ;
});