[QT]QRadioButton使用group管理

目标

在使用QRadioButton的时候,期望的方式是将几个radio button group在一起,对值的read/write都可以按group的方式进行,而不用对单个QRadioButton进行处理。

实现

方式

采用QButtonGroup,用如下步骤实现:

  1. 新建一个QButtonGroup对象;
  2. 把ui上存在的多个QRadioButton添加到这个QbuttonGroup对象中;
  3. 对group对象中的每一个radio button设置对应的id,方便后续read/write时通过id进行;
  4. 添加group对象的toggled信号和槽的关联;
  5. 实现第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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,712评论 0 17
  • Miss miao说:银杏叶都快落光了 我才想起前些天写下的文字,为你续上几笔,我也是为我自己。 ——写在开头 一...
    郁衡子阅读 2,784评论 2 7
  • 过有序生活 孩子第三个30天目标:巩固清单运用,增强自觉性 妈妈第三个30天目标:目标至上,小事围绕目标达成 加油...
    chenlan_c55e阅读 1,352评论 0 0
  • 按照社会学习理论的观点( Bandura,197),个 体主要通过观察学习的方式获得暴力攻击行为的图式。 在日常生...
    葭芷之畔阅读 5,312评论 0 0