news 2026/5/28 19:41:20

QButtonGroup (Qt)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QButtonGroup (Qt)


这里写目录标题

  • 介绍
  • 添加和删除按钮
  • 按钮id
  • 获取当前按下的按钮
  • 设置QButtonGroup互斥
  • 信号和槽

介绍

QRadioButton 是用于创建单选按钮的类,它允许用户从一组互斥的选项中选择一个。QButtonGroup 则是一个容器类,用于管理一组按钮(通常是 QRadioButton 或 QCheckBox),自动处理它们的互斥行为,例如确保同一时刻只有一个按钮被选中

添加和删除按钮

添加按钮,使用函数addButton,这个函数的原型是:

voidQButtonGroup::addButton(QAbstractButton*button,intid=-1);

button 这个参数的代表你要添加的按钮,而后面的 id则是你要添加的按钮的序号,如果id等于-1,根据容器里按钮的id来自动的给按钮添加一个id。自动添加的id,默认会从-2开始。

QRadioButton*radio1=newQRadioButton("选项1");QRadioButton*radio2=newQRadioButton("选项2");QRadioButton*radio3=newQRadioButton("选项3");radio1->setChecked(true);// 设置默认选中QButtonGroup m_group;m_group_2.addButton(radio1);m_group_2.addButton(radio2);m_group_2.addButton(radio3);// 此时按钮的id分别是-2、-3、-4QButtonGroup m_group;m_group_2.addButton(radio1,0);m_group_2.addButton(radio2,1);m_group_2.addButton(radio3,2);// 此时按钮的id分别是0、1、2QButtonGroup m_group;m_group_2.addButton(radio1,2);m_group_2.addButton(radio2);m_group_2.addButton(radio3);// 此时按钮的id分别是2、1、0QButtonGroup m_group;m_group_2.addButton(radio2);m_group_2.addButton(radio3);m_group_2.addButton(radio1,2);// 此时按钮的id分别是-2、-3、2

由上面可以得知:

如果添加按钮时,设置自动id,如果容器内有按钮,那么新添加的按钮的id为: 容器中已存在的按钮的最小id - 1,如果容器内没有按钮,则默认从-2开始。

删除按钮,使用函数removeButton,函数的原型是:

voidQButtonGroup::removeButton(QAbstractButton*button)

button 是你要删除的那个按钮。

按钮id

获取按钮的id,调用id函数,来获取。如果需要重新给按钮设置一个id,调用setId,来给按钮设置一个新的id。两个函数的原型分别为:

intQButtonGroup::id(QAbstractButton*button)constvoidQButtonGroup::setId(QAbstractButton*button,intid)

获取当前按下的按钮

调用checkButton来获取按钮组容器中,选中的按钮,如果没有按钮选中,则返回nullptr。调用checkedId同时也可以获取当前选中的按钮的id。

intQButtonGroup::checkedId()constQAbstractButton*QButtonGroup::checkedButton()const

设置QButtonGroup互斥

QButtonGroup默认是互斥的,也就是说,一个按钮组中,在同一时间下,只能有一个按钮被选中。但是,你也可以关闭掉互斥的属性。

setExclusive(bool//设置互斥的属性

信号和槽

信号的连接主要是对里面按钮按下时所发射的信号,主要是两类,一类是返回按下的按钮(QAbstractButton*),另一类是返回按下按钮的id

返回按下的按钮

主要是有几个信号:

voidQButtonGroup::buttonClicked(QAbstractButton*);voidQButtonGroup::buttonClicked(int);voidQButtonGroup::buttonPressed(QAbstractButton*);voidQButtonGroup::buttonPressed(int);voidQButtonGroup::buttonRelease(QAbstractButton*)voidQButtonGroup::buttonRelease(int)voidQButtonGroup::buttonToggled(QAbstractButton*,bool);voidQButtonGroup::buttonToggled(int,bool);

由于这些信号都是重载的,所以如果想用函数指针来连接,你像下面这样连接:

connect(buttonGroup,QOverload<QAbstractButton*>::of(&QButtonGroup::buttonClicked),[=](QAbstractButton*button){qDebug()<<button->text();});connect(buttonGroup,QOverload<int>::of(&QButtonGroup::buttonClicked),[=](intId){qDebug()<<Id;});connect(ButtonGroup,QOverload<int>::of(&QButtonGroup::buttonClicked),this,&MainWindow::onButtonGroupClicked);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/22 10:18:10

Easy Localization:让Flutter应用轻松走向全球

还在为Flutter应用的多语言支持而头疼吗&#xff1f;Easy Localization正是你需要的解决方案&#xff01;这个强大的库让国际化变得前所未有的简单&#xff0c;只需几行代码就能让你的应用支持多种语言。 【免费下载链接】easy_localization Easy and Fast internationalizing…

作者头像 李华
网站建设 2026/5/27 0:58:12

Smithbox终极指南:快速掌握游戏修改核心功能

Smithbox终极指南&#xff1a;快速掌握游戏修改核心功能 【免费下载链接】Smithbox Smithbox is a modding tool for Elden Ring, Armored Core VI, Sekiro, Dark Souls 3, Dark Souls 2, Dark Souls, Bloodborne and Demons Souls. 项目地址: https://gitcode.com/gh_mirror…

作者头像 李华
网站建设 2026/5/27 18:09:41

呼吸疾病+AI,人工智能正在改变慢病治疗

最近AI在医疗领域又搞了个大新闻&#xff01;这次是关于哮喘治疗的&#xff0c;有两方面的消息&#xff1a;一、AI设计的哮喘药物美国一家生物制药公司Generate:Biomedicines最近启动了三期临床试验&#xff0c;测试一款叫GB-0895的新药。这款药通过AI蛋白质生成模型Chroma&…

作者头像 李华
网站建设 2026/5/28 6:08:27

AI获客避坑指南:海南黑谷云科技有限公司助力规避风险

在当今数字化营销的浪潮中&#xff0c;AI获客成为众多企业拓展业务的重要手段&#xff0c;但市场上AI获客相关的机构、厂家、方案等鱼龙混杂&#xff0c;让不少用户陷入困境。许多不靠谱的AI获客生产厂家售后不完善、方案不贴合实际&#xff0c;不少口碑不佳的AI获客机构无法为…

作者头像 李华
网站建设 2026/5/26 16:41:03

OneBlog:搭建专业级Java博客系统的完整指南

OneBlog&#xff1a;搭建专业级Java博客系统的完整指南 【免费下载链接】OneBlog :alien: OneBlog&#xff0c;一个简洁美观、功能强大并且自适应的Java博客 项目地址: https://gitcode.com/gh_mirrors/on/OneBlog 想要快速搭建一个功能强大、界面美观的博客系统吗&…

作者头像 李华