qt 动态添加多个button按钮,并添加单击响应

qt动态添加多个button按钮简单,难题是如何对动态的按钮添加响应函数,本文解决方案有两个

方法一:使用信号-槽函数

 QString strTemp;int nCol = 6;//一行有6个for(int i = 0;  i < CZList.size(); i++){int ii = i / nCol;int jj = i % nCol;strTemp = QString("%1").arg(CZList[i].nnumber);QPushButton *pbtn1= new QPushButton(strTemp);pbtn1->setObjectName(strTemp);//关联信号槽函数//connect(pbtn1,SIGNAL(clicked()),this,SLOT(onButtonCliked()));//旧写法connect(pbtn1,&QPushButton::clicked,this,&CSelectZhanTaiNumber::onButtonCliked);m_pButtonList.push_back(pbtn1);pLayout->addWidget(pbtn1, ii, jj);}

void onButtonCliked()
{QPushButton *btn = qobject_cast<QPushButton*>(sender());//获取按钮显示文本QString text = btn->text();//获取按钮对象名称QString name = sender()->objectName();//do something在这里进行其他事项处理qDebug()<<"xianshi"<<text;qDebug()<<"name:"<<name;
}

方法二:使用事件过滤器

创建动态按钮

   int nCol = 6;//一行有6个按钮QString strTemp;for(int i = 0;  i < CZList.size(); i++){int ii = i / nCol;int jj = i % nCol;strTemp = QString("%1").arg(CZList[i].nnumber);QPushButton *pbtn1= new QPushButton(strTemp);pbtn1->setObjectName(strTemp);        pbtn1->installEventFilter(this);m_pButtonList.push_back(pbtn1);pLayout->addWidget(pbtn1, ii, jj);}

重写事件过滤器

 bool xx::eventFilter(QObject *obj, QEvent *e)
{//使用事件过滤器,就不用添加多个connect了,方便2024.1.30if (getButoonStatus(obj)){if (e->type() == QEvent::MouseButtonPress){QMouseEvent* mouseEv = static_cast<QMouseEvent*>(e);QString qs = QString("name: %3").arg(obj->objectName());qDebug() << qs;return true;}}return QWidget::eventFilter(obj, e);
}
bool XX::getButoonStatus(QObject *obj)
{bool bRet = false;for(int i = 0; i < m_nNumber; i++){if(m_pButtonList[i] == obj){bRet = true;}}return bRet;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/439512.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全防御保护 Day4

要点一&#xff1a;防火墙的智能选路 就近选路&#xff1a; 在访问不同运营商的服务器时直接通过对应运营商的链路&#xff0c;以此来提高通信效率&#xff0c;避免绕路。 策略路由&#xff08;PBR&#xff09;&#xff1a; 这是一种基于用户定义的策略&#xff08;如业务需求、…

springboot3+vue支付宝在线支付案例-解决跨域请求的问题

springboot3vue支付宝在线支付案例-解决跨域请求的问题&#xff01;为了使用外网地址&#xff0c;跨域请求业务接口。我们需要设置一个类。配置一下。 我们采用的方案是。借助于 WebMvcConfigurer package com.example.demo.config;import org.springframework.context.annot…

酷开会员 | 用酷开系统点亮多彩休闲时刻

现代人的休闲方式多种多样&#xff0c;随着科技的发展和生活水平的提高&#xff0c;人们有了更多的选择。而电视&#xff0c;作为一个休闲娱乐的载体&#xff0c;在生活中扮演着重要的角色。 以前&#xff0c;电视是家家户户休闲娱乐的重要组成部分&#xff0c;现在&#xff0…

再谈启动一个Activity大致时序图

太多了&#xff0c;笔者不想写&#xff0c; 读者可通过PlantUML插件查看如下PUML文件生成的时序图。 补充说明下&#xff0c;Android31版本。 startuml https://plantuml.com/sequence-diagram skinparam dpi 800 scale 15000 width scale 5000 heightautonumber Launcher La…

SeaTunnel Web安装 一把成

安装相关jar包&#xff0c;以及SeaTunnel 和Web 打成的包&#xff0c;可以直接使用&#xff0c;但是需要安装MySQL客户端的分享&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1qrt1RAX38SgIpNklbQJ7pA 提取码&#xff1a;0kmf 1. 环境准备 环境名称版本系统环境C…

echarts:获取省、市、区/县、镇的地图数据

目录 第一章 前言 第二章 获取地图的数据&#xff08;GeoJSON格式&#xff09; 2.1 获取省、市、区/县地图数据 2.2 获取乡/镇/街道地图数据 第一章 前言 需求&#xff1a;接到要做大屏的需求&#xff0c;其中需要用echarts绘画一个地图&#xff0c;但是需要的地图是区/县…

隐马尔可夫模型系列——(五)实际应用

一、语音识别 隐马尔可夫模型&#xff08;Hidden Markov Model&#xff0c;HMM&#xff09;在语音识别中被广泛应用&#xff0c;它是一种统计模型&#xff0c;用于建模序列数据的动态过程。语音识别任务涉及将声音信号转化为文本或命令&#xff0c;而HMM可以帮助我们解决这个问…

AI工具【OCR 01】Java可使用的OCR工具Tess4J使用举例(身份证信息识别核心代码及信息提前方法分享)

Java可使用的OCR工具Tess4J使用举例 1.简介1.1 简单介绍1.2 官方说明 2.使用举例2.1 依赖及语言数据包2.2 核心代码2.3 识别身份证信息2.3.1 核心代码2.3.2 截取指定字符2.3.3 去掉字符串里的非中文字符2.3.4 提取出生日期&#xff08;待优化&#xff09;2.3.5 实测 3.总结 1.简…

UE5.1_常用节点说明(经常忘记怎么用?)(常改)

UE5.1_常用节点说明&#xff08;经常忘记怎么用&#xff1f;&#xff09;&#xff08;常改&#xff09; 1. Gate——门节点。只有当门是Open状态才会执行Exit后面的代码。 Open开门&#xff1b;Close关门&#xff1b;Toggle开门和关门交替。 2. 关于控制ArmLength即控制相机前…

行测-数量关系:2. 工程问题、经济利润问题

1、工程问题 1.1 给具体单位型 A&#xff0c;二元一次方程 1.2 给完工时间型 18 D D&#xff0c;注意问题是共需要多少天。 A&#xff0c;代入法是最快的。 A C 1.3 给效率比例型 C&#xff0c;注意是问的共需要多少天。 A C A 2、经济利润问题 2.1 基础经济★★★ B B&#xf…

MySQL安全(一)权限系统

一、授权 1、创建用户 在MySQL中&#xff0c;管理员可以通过以下命令创建用户&#xff1a; namelocalhost IDENTIFIED BY password; name是要创建的用户名&#xff0c;localhost表示该用户只能从本地连接到MySQL&#xff0c;password是该用户的密码。如果要允许该用户从任何…

22.云原生之GitLab CICD实战及解析【干货】

云原生专栏大纲 文章目录 准备工作gitlab-ci.yml流水线mven打包项目制作并推送镜像kaniko方式docker方式 部署到k8s验证执行情况 GitLab Runner k8s执行器工作流程注册配置kubernetes runnerkubernetes runner配置通过修改 Pod 规范为每个构建作业创建一个 PVC自定义卷装载持久…