目标
在使用QRadioButton
的时候,期望的方式是将几个radio button group在一起,对值的read/write都可以按group的方式进行,而不用对单个QRadioButton进行处理。
实现
方式
采用QButtonGroup
,用如下步骤实现:
- 新建一个QButtonGroup对象;
- 把ui上存在的多个QRadioButton添加到这个QbuttonGroup对象中;
- 对group对象中的每一个radio button设置对应的id,方便后续read/write时通过id进行;
- 添加group对象的
toggled
信号和槽的关联; - 实现第4步添加的槽函数;
sample code
1. 新建一个QButtonGroup对象
/* RaidoButtonGroup.h*/
QButtonGroup* bgGroup;
/* RadioButtonGroup.cpp constructor*/
bgGroup = new QButtonGroup( this );
2. 把ui上存在的QRadioButton添加到bgGroup中
bgGroup->addButton( ui.rb_0 );
bgGroup->addButton( ui.rb_1 );
bgGroup->addButton( ui.rb_2 );
3. 设置id
bgGroup->setId(ui.rb_0, 0 );
bgGroup->setId( ui.rb_1, 1 );
bgGroup->setId( ui.rb_2, 2 );
4. 添加信号和槽的关联
connect( bgGroup, SIGNAL(buttonToggled(int, bool), this, SLOT(on_bgGroup_toggled(int, bool)));
5. 实现槽函数
void RadioButtonGroup::on_bgGroup_toggled(int id, bool status) {
// id is the QRadioButton id, status is the check status
// or you can get value from bgGroup->checkedId();
qDebug() << bgGroup->checkedId();
qDebug() << id;
}