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

【Qt控件之QButtonGroup】概述及使用

概述

QButtonGroup 类提供了一个容器来组织一组按钮部件。
QButtonGroup 提供了一个抽象容器,可以将按钮部件放置其中。它不提供此容器的可视表示(请参见 QGroupBox,用于容器部件),而是管理组中每个按钮的状态。
一个互斥按钮组会关闭除被点击的按钮之外的所有可选(切换)按钮。默认情况下,按钮组是互斥的。按钮组中的按钮通常是可选的 QPushButtonQCheckBox(通常用于非互斥按钮组)或 QRadioButton。如果创建了一个互斥按钮组,应确保组中的一个按钮在初始状态下被选中;否则,该组将初始处于没有按钮被选中的状态。
可以使用 addButton() 将按钮添加到组中,并使用 removeButton() 将其移除。如果组是互斥的,则可以使用checkedButton()获得当前选中的按钮。如果按钮被点击,则会发出buttonClicked()信号;对于互斥组中的可选按钮,这意味着按钮已被选中。组中的按钮列表可以通过buttons()返回。
此外,QButtonGroup 还可以在整数和按钮之间进行映射。可以使用 setId() 为按钮分配一个整数 ID,并使用id()获取它。当前选中按钮的 ID 可以使用checkedId()获得,并且有一个重载的 buttonClicked() 信号,它会发出按钮的 ID。ID==-1QButtonGroup保留为“无此按钮”。映射机制的目的是简化在用户界面中表示枚举值的方式。

常用函数

QButtonGroup 类的构造函数、常用函数、枚举值、信号和槽如下:

  1. 构造函数:

    • QButtonGroup(QWidget *parent = nullptr):构造一个按钮组,父部件为定的 parent。
  2. 常用函数:
    - void addButton(QAbstractButton *button, int id = -1):将按钮 button 添加到按钮组中,并可为其指定一个整数 ID。

    • void removeButton(QAbstractButton *button):将按钮 button 从按钮组中移除。
    • QList<QAbstractButton *> buttons() const:返回按钮组中的所有按钮。
    • void setExclusive(bool exclusive):设置按钮组是否为互斥模式。如果 exclusive 为 true,则在组中只有一个按钮可以被选中;如果为 false,则允许多个按钮同时被选中。
    • void setId(QAbstractButton *button, int id):为按钮 button 设置一个整数 ID。
    • int id(QAbstractButton *button) const:返回按钮 button整数 ID。
    • QAbstractButton *button(int id) const:具有指定整数 ID 的按钮。
    • QAbstractButton *checkedButton() const:返回当前被选中的按钮。
    • int checkedId() const:返回当前被选中按钮的整数 ID。
  3. 枚举值:

    • QButtonGroup::ButtonClicked:按钮被点击的信号类型,包含按钮的指针。
  4. 信号:

    • void buttonClicked(QAbstractButton *button):当按钮被点击时发出的信号,传递被点击的按钮的指针。
  5. 槽:

    • void clicked(QAbstractButton *button):当按钮被点击时触发的槽函数。

使用示例

#include <QApplication>
#include <QPushButton>
#include <QButtonGroup>
#include <QDebug>int main(int argc, char *argv[])
{QApplication app(argc, argv);QButtonGroup buttonGroup;QPushButton *button1 = new QPushButton("Button 1");QPushButton *button2 = new QPushButton("Button 2");QPushButton *button3 = new QPushButton("Button 3");buttonGroup.addButton(button1, 1);buttonGroup.addButton(button2, 2);buttonGroup.addButton(button3, 3);QObject::connect(&buttonGroup, &QButtonGroup::buttonClicked, [&](QAbstractButton *button) {qDebug() << "Button clicked:" << button->text();qDebug() << "Button ID:" << buttonGroup.id(button);});button1->click(); // 模拟点击按钮1return app.exec();
}

提示:
如果以上代码信号和槽无法执行,是由于信号重写,可用SIGNALSLOT进行连接。

效果

在这里插入图片描述

在这个示例中,创建了一个按钮组 buttonGroup,并向其中添加了三个 QPushButton 按钮,分别设置了它们的文本和整数 ID。
当按钮被点击时,会触发 buttonClicked 信号,并打印出被点击的按钮的文本和整数 ID。
通过调用 button1->click() 模拟点击了按钮1,从而触发响应的信号和槽函数。

http://www.lryc.cn/news/197387.html

相关文章:

  • 【开源分享】基于Html开发的房贷计算器,模仿新浪财经
  • ftp文件上传缓慢问题
  • 【周末闲谈】VR新视界,“眼”见未来
  • CSRF和XSS是什么?
  • 【Machine Learning】01-Supervised learning
  • 《视觉 SLAM 十四讲》V2 第 8 讲 视觉里程计2 【如何根据图像 估计 相机运动】【光流 —> 直接法】
  • Unity DOTS System与SystemGroup概述
  • IDEA使用内置database数据库连接mysql报错:javax.net.ssl.SSLHandshakeException
  • 从Flink的Kafka消费者看算子联合列表状态的使用
  • CSS3 按钮
  • STM32 BootLoader设置
  • django REST framework-使用与不使用的区别?
  • 获取URL中的参数
  • 一起学数据结构(9)——二叉树的链式存储及相关功能实现
  • vue 后端返回二进制流-前端通过blob对象下载文件-图片
  • vue el-dialog封装成子组件(组件化)
  • 爬虫教程 一 requests包的使用
  • Aria2NG连接aria2-pro提示认证失败的处理办法
  • MYSQL 连接
  • SeaTunnel 换maven源,解决插件下载慢
  • 安卓14通过“冻结”缓存应用程序腾出CPU,提高性能和内存效率
  • jupyter崩溃OOM,out of memory,jupyter代码写不进去,保存不了。
  • 一文带你快速掌握爬虫开发中的一些高级调试技巧
  • 6.(vue3.x+vite)路由传参query与params区别
  • C++string的使用
  • 闲着也是闲着,自己写歌东西玩一玩,碰碰脑子,简单快乐一点,双人出数的小游戏,后续还带补充
  • 牛客网 -- WY28 跳石板
  • [正式学习java③]——字符串在内存中的存储方式、为什么字符串不可变、字符串的拼接原理,键盘录入的小细节。
  • 行情分析——加密货币市场大盘走势(10.18)
  • 高并发场景下常见的限流算法及方案介绍