QButtonGroup

QButtonGroup

QButtonGroup 是 Qt 中用于逻辑分组按钮(如 QRadioButton、QPushButton、QCheckBox 等)的非界面控件类。它本身不是一个可视控件,而是管理多个按钮的集合,方便统一控制按钮的行为和信号。


主要功能和特点

  • 按钮分组管理
    将多个按钮(单选按钮、多选框、普通按钮等)添加到一个组内,便于统一管理。
  • 互斥选择
    对于单选按钮组,QButtonGroup 默认启用互斥模式(exclusive),保证组内只有一个按钮被选中。
  • 信号集中处理
    提供统一的信号,如 buttonClicked(int id),当组内任一按钮被点击时,发送带有按钮 ID 的信号,方便集中处理。
  • 按钮 ID 绑定
    添加按钮时可以给每个按钮指定一个整数 ID,便于识别和管理。
  • 支持多种按钮类型
    不仅限于 QRadioButton,也支持 QCheckBox、QPushButton 等任意继承自 QAbstractButton 的按钮。
  • 非可视控件
    它不占用界面空间,只负责逻辑管理按钮。

典型应用场景

  • 实现单选按钮的分组互斥(尤其按钮不在同一父控件时)
  • 多按钮组统一处理点击事件
  • 为按钮组内按钮绑定唯一标识 ID,方便事件响应和业务处理

主要方法和用法简介

  • *addButton(QAbstractButton button, int id = -1)
    添加按钮到组内,并可选指定按钮 ID。
  • *removeButton(QAbstractButton button)
    从组内移除按钮。
  • button(int id) const
    根据 ID 获取对应按钮指针。
  • buttons() const
    获取组内所有按钮列表。
  • setExclusive(bool exclusive)
    设置是否启用互斥模式(默认 true)。
  • isExclusive() const
    查询是否启用互斥。
  • buttonClicked(int id) (信号)
    按钮点击时发出,携带按钮 ID。
  • buttonToggled(int id, bool checked) (信号)
    按钮切换状态时发出,携带按钮 ID 和状态。

使用示例

QRadioButton* rb1 = new QRadioButton("选项1", this);
QRadioButton* rb2 = new QRadioButton("选项2", this);
QPushButton* pb1 = new QPushButton("普通按钮", this);

QButtonGroup* group = new QButtonGroup(this);
group->addButton(rb1, 1);
group->addButton(rb2, 2);
group->addButton(pb1, 3);

connect(group, QOverload<int>::of(&QButtonGroup::buttonClicked), this, [](int id){
qDebug() << "按钮 ID:" << id << "被点击";
});

总结

QButtonGroup 是一个非常实用的逻辑控件,帮助你:

  • 把多个按钮组合成一个组
  • 实现互斥单选
  • 简化信号槽处理
  • 方便管理和识别按钮

部分内容省略了,课程内容有完整的详细教程。

计算机技术课程https://blog.csdn.net/2301_76542477/article/details/149032632?spm=1011.2415.3001.5331

相关推荐
Hui Baby几秒前
Java SPI 与 Spring SPI
java·python·spring
德迅云安全—珍珍2 分钟前
低配服务器性能不够用怎么去优化?
运维·服务器
我能坚持多久3 分钟前
D22—C语言预处理详解:从宏定义到条件编译
c语言·开发语言
-dzk-5 分钟前
【代码随想录】LC 707.设计链表
数据结构·c++·算法·链表
小猪咪piggy5 分钟前
【Python】(3) 函数
开发语言·python
青岑CTF14 分钟前
攻防世界-Php_rce-胎教版wp
开发语言·安全·web安全·网络安全·php
2301_8223636014 分钟前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
摇滚侠15 分钟前
Maven 教程,Maven 安装及使用,5 小时上手 Maven 又快又稳
java·maven
倔强菜鸟17 分钟前
2026.2.2--Jenkins的基本使用
java·运维·jenkins
笑锝没心没肺17 分钟前
Linux Audit 系统配置介绍
linux·运维·服务器