【Qt控件之QButtonGroup】概述及使用
概述
QButtonGroup 类提供了一个容器来组织一组按钮部件。
QButtonGroup 提供了一个抽象容器,可以将按钮部件放置其中。它不提供此容器的可视表示(请参见 QGroupBox,用于容器部件),而是管理组中每个按钮的状态。
一个互斥按钮组会关闭除被点击的按钮之外的所有可选(切换)按钮。默认情况下,按钮组是互斥的。按钮组中的按钮通常是可选的 QPushButton、QCheckBox(通常用于非互斥按钮组)或 QRadioButton。如果创建了一个互斥按钮组,应确保组中的一个按钮在初始状态下被选中;否则,该组将初始处于没有按钮被选中的状态。
可以使用 addButton() 将按钮添加到组中,并使用 removeButton() 将其移除。如果组是互斥的,则可以使用checkedButton()获得当前选中的按钮。如果按钮被点击,则会发出buttonClicked()信号;对于互斥组中的可选按钮,这意味着按钮已被选中。组中的按钮列表可以通过buttons()返回。
此外,QButtonGroup 还可以在整数和按钮之间进行映射。可以使用 setId() 为按钮分配一个整数 ID,并使用id()获取它。当前选中按钮的 ID 可以使用checkedId()获得,并且有一个重载的 buttonClicked() 信号,它会发出按钮的 ID。ID==-1被QButtonGroup保留为“无此按钮”。映射机制的目的是简化在用户界面中表示枚举值的方式。
常用函数
QButtonGroup 类的构造函数、常用函数、枚举值、信号和槽如下:
-
构造函数:
QButtonGroup(QWidget *parent = nullptr):构造一个按钮组,父部件为定的 parent。
-
常用函数:
-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。
-
枚举值:
QButtonGroup::ButtonClicked:按钮被点击的信号类型,包含按钮的指针。
-
信号:
void buttonClicked(QAbstractButton *button):当按钮被点击时发出的信号,传递被点击的按钮的指针。
-
槽:
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();
}
提示:
如果以上代码信号和槽无法执行,是由于信号重写,可用SIGNAL和SLOT进行连接。
效果

在这个示例中,创建了一个按钮组 buttonGroup,并向其中添加了三个 QPushButton 按钮,分别设置了它们的文本和整数 ID。
当按钮被点击时,会触发 buttonClicked 信号,并打印出被点击的按钮的文本和整数 ID。
通过调用 button1->click() 模拟点击了按钮1,从而触发响应的信号和槽函数。
相关文章:
【Qt控件之QButtonGroup】概述及使用
概述 QButtonGroup 类提供了一个容器来组织一组按钮部件。 QButtonGroup 提供了一个抽象容器,可以将按钮部件放置其中。它不提供此容器的可视表示(请参见 QGroupBox,用于容器部件),而是管理组中每个按钮的状态。 一个…...
【开源分享】基于Html开发的房贷计算器,模仿新浪财经
房贷计算器是一种房贷计算的在线计算Web应用,按用户选择的贷款类型、贷款金额、期限、利率可计算得出每月月供参考、支付利息、还款总额这些信息。本文模仿新浪财经开发的房贷计算器。 作品预览 https://fangdai.gitapp.cn 源码地址 https://github.com/geeeeeee…...
ftp文件上传缓慢问题
问题描述 某环境下,通过vsftp上传文件缓慢。 问题分析 这个问题是由于服务器DNS导致,如果在内网机器中,配置了公网的DNS或者其他不能链接的DNS,会导致上传缓慢。 解决方案 目前有两种解决方式,任选其一即可&#…...
【周末闲谈】VR新视界,“眼”见未来
个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录 系列目录前言虚拟现实(VR)技术虚拟现实技术的原理虚拟现实技术发…...
CSRF和XSS是什么?
CSRF(Cross-site request forgery):跨站请求伪造。 用户是网站A的注册用户,且登录进去,于是网站A就给用户下发cookie。 满足条件: (1)登录受信任网站A,并在本地生成Cook…...
【Machine Learning】01-Supervised learning
01-Supervised learning 1. 机器学习入门1.1 What is Machine Learning?1.2 Supervised learning1.3 Unsupervised learning 2. Supervised learning2.1 单元线性回归模型2.1.1 Linear Regression Model(线性回归模型)2.1.2 Cost Function(代…...
《视觉 SLAM 十四讲》V2 第 8 讲 视觉里程计2 【如何根据图像 估计 相机运动】【光流 —> 直接法】
OpenCV关于 光流的教程 文章目录 第 8 讲 视觉里程计 28.2 光流8.3 实践: LK 光流 【Code】本讲 CMakeLists.txt 8.4 直接法8.5 实践: 双目的稀疏直接法 【Code】8.5.4 直接法的优缺点 习题 8√ 题1 光流方法题2题3题4题5 第 8 讲 视觉里程计 2 P205 …...
Unity DOTS System与SystemGroup概述
最近DOTS终于发布了正式的版本, 我们来分享以下DOTS里面System关键概念,方便大家上手学习掌握Unity DOTS开发。 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀! System是迭代计算与处理World中的…...
IDEA使用内置database数据库连接mysql报错:javax.net.ssl.SSLHandshakeException
参考一些博客的方式: 使用idea内置database连接数据库报错javax.net.ssl.SSLHandshakeException: No appropriate protocol_idea database ssl_你当像山的博客-CSDN博客 他们的方式是:在url后添加useSSLfalse 介绍另外一种方式: 点击datab…...
从Flink的Kafka消费者看算子联合列表状态的使用
背景 算子的联合列表状态是平时使用的比较少的一种状态,本文通过kafka的消费者实现来看一下怎么使用算子列表联合状态 算子联合列表状态 首先我们看一下算子联合列表状态的在进行故障恢复或者从某个保存点进行扩缩容启动应用时状态的恢复情况 算子联合列表状态主…...
CSS3 按钮
创建 CSS3 按钮可以通过组合样式属性和伪类来实现 <!DOCTYPE html> <html> <head><link rel"stylesheet" type"text/css" href"styles.css"> </head> <body><button class"basic-button">…...
STM32 BootLoader设置
编写bootloader程序: 直接复制下面代码到自己程序中。 typedef void (*iapfun)(void); //定义一个函数类型的参数. iapfun jump2app; //设置栈顶地址 //addr:栈顶地址 __asm void MSR_MSP(u32 addr) {MSR MSP, r0 //set Main Stack valueBX r14 }//跳转到…...
django REST framework-使用与不使用的区别?
首先,来回顾一下传统的基于模板引擎的 django 开发工作流: 绑定 URL 和视图函数。当用户访问某个 URL 时,调用绑定的视图函数进行处理。 编写视图函数的逻辑。视图中通常涉及数据库的操作。 在视图中渲染 HTML 模板,返回 HTTP 响应…...
获取URL中的参数
获取URL中的参数 function getUrlParam(name) {var reg new RegExp("(^|&)" name "([^&]*)(&|$)");var r window.location.search.substr(1).match(reg);if (r ! null)return unescape(r[2]);return null; } 这个正则表达式就是一个URL路…...
一起学数据结构(9)——二叉树的链式存储及相关功能实现
目录 1. 二叉树的链式存储: 2. 二叉树的前序遍历: 3. 二叉树的中序遍历: 4. 二叉树的后序遍历: 5. 统计二叉树的结点总数 6.统计二叉树的叶子结点数: 7. 统计二叉树第层的结点数量: 8. 二叉树的销毁…...
vue 后端返回二进制流-前端通过blob对象下载文件-图片
前言 在实际开发中我们经常会遇见下载文件的场景,比如下载合同,下载文件 下载文件有2种方式,一种是后端返回二进制流,前端通过blob对象接受根据不同类型下载 还有一种把地址直接在浏览器新窗口打开浏览器打开pdf可以预览和下载&…...
vue el-dialog封装成子组件(组件化)
前言 实际开发过程中我们经常听见组件化开发,但在实际开发过程中(没有人审查时)怎么方便来 我们有时是因为时间不够,所以把所有代码写在一个页面。当业务逻辑复杂时可能会有1k多行 虽然不能要求自己写出高效复用性高的组件&…...
爬虫教程 一 requests包的使用
request 简介 requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。 response.text 和response.content的区别 response.text 类型:str解码类型: requests模块自动根据HTTP 头部对响应的编码作…...
Aria2NG连接aria2-pro提示认证失败的处理办法
本文档适用于已经安装了aria2-pro和AriaNg的小伙伴~ 第一次登录管理端会提示”认证失败“ 这是因为aria设置了密码,需要在设置中配置上密码即可 配置完密码重新加载就可以正常使用啦 下载速度明显比以前快了很多 下载参考文档 Docker安装下载神器aria2并使用过程记…...
MYSQL 连接
高频 SQL 50 题(基础版) - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 1378. 使用唯一标识码替换员工ID SELECT COALESCE(unique_id, NULL) AS unique_id,name FROM Employees LEFT JOIN EmployeeUNI ON Employees.…...
AdvancedLiterateMachinery的LORE-TSR:逻辑位置回归网络在表格结构识别中的突破
AdvancedLiterateMachinery的LORE-TSR:逻辑位置回归网络在表格结构识别中的突破 【免费下载链接】AdvancedLiterateMachinery A collection of original, innovative ideas and algorithms towards Advanced Literate Machinery. This project is maintained by the…...
Watchify常见问题解决方案:解决监视失败的7个实用技巧
Watchify常见问题解决方案:解决监视失败的7个实用技巧 【免费下载链接】watchify watch mode for browserify builds 项目地址: https://gitcode.com/gh_mirrors/wa/watchify Watchify作为Browserify的监视模式工具,能在文件变化时自动重新构建&a…...
PIC16F驱动WS2812:8位MCU实现无限随机动态灯光算法
1. 项目概述与核心思路 几年前,我在捣鼓一个节日南瓜灯项目时,遇到了一个经典难题:手头只有一片资源极其有限的PIC16F1847微控制器,却想驱动一串WS2812(也就是大家常说的NeoPixel)LED,做出那种看…...
Hitboxer:免费解决游戏按键冲突的专业SOCD重映射工具
Hitboxer:免费解决游戏按键冲突的专业SOCD重映射工具 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否曾在激烈的格斗游戏中,因为同时按下左右方向键而无法准确释放必杀技ÿ…...
网易云音乐NCM格式转换:三步解密法让音乐自由播放
网易云音乐NCM格式转换:三步解密法让音乐自由播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾在网易云音乐下载了心爱的歌曲,却发现只能在特定播放器中欣赏?当你想要在其他设备或播放…...
咸鱼大量流出430元几乎全新联想迷你图形工作站小主机,支持8-9代标压处理器,最高双NVME+2.5寸SATA三盘位,还可选配独立显卡!
相比于普通小主机,工作站主机产品在性能以及扩展方面更有看点,可玩性高的不是一点,两点。即使是过时淘汰的古董机器,价位也是居高不下,贩子控价原因是一方面,还有法拉利老了也是法拉利,捡垃圾也…...
从谐波治理到能量回馈:深入聊聊LCL滤波器在光伏逆变器和PWM整流器里的那些关键设计
LCL滤波器设计实战:从谐波抑制到能量回馈的工程权衡 在光伏逆变器和PWM整流器设计中,电流谐波治理一直是工程师面临的核心挑战。当项目要求总谐波失真率(THD)必须低于3%时,传统L滤波器往往力不从心——要么需要超大电感量导致体积膨胀&#x…...
长期使用Taotoken聚合服务对开发效率的实际提升感受
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken聚合服务对开发效率的实际提升感受 作为一名在多个项目中集成大模型能力的开发者,我过去需要为不同的…...
Linux|操作系统|zfs文件系统的使用详解
一、 前言概述 书接上回,https://zskjohn.blog.csdn.net/article/details/160741859 Linux|操作系统|最新版openzfs编译记录,上文将zfs文件系统编译安装完毕了,也做了一些总结,但总结的不够全面,本文在做一些补充&am…...
基于单相全波晶闸管的基本交流电压控制器,带电阻负载(Simulink仿真实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
