当前位置: 首页 > news >正文

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);
http://www.cnnetsun.cn/news/19558.html

相关文章:

  • AppPolice终极指南:如何快速限制Mac应用CPU占用
  • 2025 年广州服装批发市场推荐:原创与效率双驱采批标杆
  • 记录vue动态切换访问后台服务
  • stm32 adc采集光敏传感器模块的模拟输出脚A0的值
  • 银发旅游崛起:退休后的“第二人生”革命
  • 3步精通Eino框架:构建企业级Go语言AI应用
  • 如何让文件秒变二维码?文件生成二维码技巧
  • 如何实现本地图片转为二维码?本地图片生成二维码全攻略
  • 如何创作你的专属表情包?GIF动图制作全攻略
  • 探索数字经济前沿:2025国际期刊/国际会议
  • Windows热键冲突检测利器:Hotkey Detective深度解析
  • MELD多模态情感识别:如何让AI真正理解对话中的情感变化?
  • 创意AI应用开发大赛 - 基于Google AI Studio的创新实践指南
  • AI是风口还是泡沫?一个独立开发者的冷思考
  • 喜马拉雅下载工具终极指南:快速实现离线音频批量管理
  • 校务管理|基于Java+ vue校务管理系统(源码+数据库+文档)
  • 酒店预约|基于Java+ vue酒店预约系统(源码+数据库+文档)
  • 校园社团|基于springboot 校园社团管理系统(源码+数据库+文档)
  • 个人博客|基于springboot个人博客系统(源码+数据库+文档)
  • VideoReTalking技术深度探索:解锁视频配音的无限可能
  • 测试工程师的沟通与报告技巧
  • Morisawa BIZ UDGothic 字体完全指南:提升文档易读性的终极选择
  • 深度解析《2025 中国 RFID 无源物联网产业白皮书》:技术架构、开发实践与万亿级赛道机遇
  • 如何用机器学习解锁Social_Network_Ads用户购买密码?3天实战完整指南
  • AI代理协作系统部署与监控实战指南
  • 一键搞定专业影棚光效!Dimension 2025 助力品牌视觉升级最新下载安装步骤
  • GLM-4-9B全面解析:开源大模型如何重塑企业AI应用格局
  • 3分钟快速上手:Qwen3-VL多模态AI模型的完整使用指南
  • 动态GIF库gif-h使用教程
  • 【酒馆玩家必看】Claude平替找到了?OpenRouter榜单第二的隐藏神模DeepSeek R1T2,究竟有多强?