Qt connect信号槽多次定义,会多次触发槽函数

2023-11-10

问题描述:
点击Websocket【连接】按钮的时候将open连接到指定的地址,websocket在连接成功后会发出 connected信号;同时我们在初始化的时候就将,connected信号和我们的onconnected()函数建立连接;

onconnected()函数,用于将接收到新的消息和我们的接收消息处理的槽函数绑定起来,以及做一些连接后的处理工作;

void CWebSocketTool::innit()
{
    //初始化创建的连接,是否应该放到一List上去存储?
    connect(m_webSocket, &QWebSocket::connected, this, &CWebSocketTool::onConnected);
    connect(m_webSocket, &QWebSocket::disconnected, this, &CWebSocketTool::closed);
 

}

void CWebSocketTool::onConnected()
{
    //这里不应该为true,因为握手了并不代表认证成功
    //m_connectstatu = true;
       connect(m_webSocket, &QWebSocket::textMessageReceived,this, &CWebSocketTool::onTextMessageReceived);
}

注意上面这个onconnected()函数实现的功能:
每次调用这个函数的时候,就会重新连接一次信号槽。

多次点击Websocket【连接】按钮,每次都连接成功的情况下。会多次执行onconnected()函数,导致创建多个信号与槽函数的连接

当后面连接成功后,通过websocket接收到新消息,触发 textMessageReceived信号,接收到一条消息会多次触发  onTextMessageRecevied 函数。

修改之后

void CWebSocketTool::innit()
{
    //初始化创建的连接,是否应该放到一List上去存储?
    connect(m_webSocket, &QWebSocket::connected, this, &CWebSocketTool::onConnected);
    connect(m_webSocket, &QWebSocket::disconnected, this, &CWebSocketTool::closed);

    connect(m_webSocket, &QWebSocket::textMessageReceived,this, &CWebSocketTool::onTextMessageReceived);
}

void CWebSocketTool::onConnected()
{
    //这里不应该为true,因为握手了并不代表认证成功
    //m_connectstatu = true;

}

将connect建立部分,放到初始化部分,只实例化时调用一次,避免了多次创建connect信号与槽的问题

其实问题的根本原因:就是要避免多次创建信号与槽。 多了解一下信号与槽的建立机制,或者在使用的时候,加上限制参数

connect(m_webSocket, &QWebSocket::textMessageReceived,this, &Widget::onTextMessageReceived,Qt::UniqueConnection);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt connect信号槽多次定义,会多次触发槽函数 的相关文章

随机推荐

  • Eclipse配置

    一 eclipse安装时选择的专门开发java项目的Eclipse IDE for Java Developers 因此没有new Dynamic Web Project 属于JavaEE 选项 方法1 直接安装JavaEE版本eclips
  • 开源ehr系统_国家通过开源EHR节省数百万美元

    开源ehr系统 自从2009年成为 经济和临床健康卫生信息技术 HITECH 法案 的基石以来 电子健康记录 EHR 在美国卫生系统中已无处不在 EHR使医疗保健提供者可以跟踪患者的医疗数据 并与其他授权方共享 VistA是美国退伍军人事务
  • orz项目编译的要点

    Orz 0 4 0 AllInOne iso 的编译指导 其实也没有什么需要指导的 只是想说明 这个过程是很容易的 要有信心 下载到Orz 0 4 0 AllInOne iso之后 按照文档readme hta来操作 因为这是个很老的教材
  • 2008.06.02 读华为前执行副总裁李玉琢的《我与商业领袖的合作与冲突》有感(三)

    理解一下书中提到的几点管理思想 和大家一起分享 1 柳传志的 搭班子 定战略 带队伍 这里需要注意的是搭班子 定战略 带队伍顺序不可乱 为什么这样说 一个组织只有先存在核心 才可能确定明确的战略 不同的核心 定出来的战略就可能不一样 因此是
  • 力扣202.快乐数(java语言HashSet方法,类双指针方法)

    前言 此题被分类到散列表算法题目中 但乍一看此题实在想不到如何去使用散列表 直到看了官方给的答案 题目描述 编写一个算法来判断一个数 n 是不是快乐数 快乐数 定义为 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 然后重复这
  • 2021年度

    践行开源共创的精神 FISCO BCOS开源社区致力打造开放多元的开源联盟链生态 目前 社区已汇聚了超70000名社区用户 大家聚集于此碰撞观点 交流技术 围绕FISCO BCOS开发各类实用的应用组件 持续优化项目 并自发输出技术解析 使
  • 使用Java写入Excel下拉选择框选项过多不显示问题

    1 问题描述 工作中遇到需要使用Java poi读写Excel文件的问题 因为需求中有要求在写文件时创建下拉选择框 按照传统的直接使用List集合保存下拉选择框的选项 再通过poi本身的方法将选择框的选项添加到下拉框中 一开始编写demo测
  • 【01】花卉识别-基于tensorflow2.3实现

    2021年6月18日重大更新 目前已经退出bug修复之后的tensorflow2 3物体分类代码 大家可以训练自己的数据集 快来试试吧 csdn教程链接 手把手教你用tensorflow2 3训练自己的分类数据集 CSDN博客 b站视频链接
  • APP自动化测试-4. App控件交互

    APP自动化测试 4 App控件交互 文章目录 APP自动化测试 4 App控件交互 前言 一 元素常用的操作方法 二 元素的常用属性 总结 前言 简单介绍元素的操作方法和元素的属性 一 元素常用的操作方法 click 元素点击 send
  • Mybatis使用in传入List的三种方法

    1 非xml方式 使用注解传in 要使用 Select
  • 全国计算机等级考试三级数据库技术(十一)

    第十一章 故障管理 考点分析 在考试中一般情况下会出现在选择题 填空题部分 常考知识点有 1 掌握故障类型及相应的解决方法 2 掌握数据转储与日志文件的相关内容 3 掌握RAID的冗余技术和服务器容错技术 4 熟悉数据库镜像与数据库容灾 1
  • Java 实战项目-- 家庭记账程序

    模拟实现一个基于文本界面的 家庭记账软件 该软件能够记录家庭的收入 支出 并能够打印收支明细表 项目采用分级菜单方式 主菜单如下 具体要求 查询收支明细 菜单1 时 将显示所有的收入 支出名细列表 每次登记收入 菜单2 后 收入的金额应累加
  • 一、C语言初阶:指针

    1 指针 1 1 指针的算术运算 指针移动 int arr 1 2 3 4 5 int p arr int q 移动指针顺序打印 for int i 0 i lt 5 i q p i printf d q printf n 移动指针倒序打印
  •  RedHat 7.2 安装 Zabbix 监控程序详解(适合对linux初级用户)

    目录 RedHat 7 2 安装 Zabbix 监控程序详解 适合对linux初级用户 2020 0927 1 安装环境 查看环境 2 准备yum环境 3 安装LAMP架构 4 zabbix的安装和配置 4 1 第一次出现报错 4 2 第二
  • Rust——Macos安装使用

    进入官网会自动检测当前是什么操作系统 我的是Mac 所以使用官网给的命令安装就可以了 终端输入 curl proto https tlsv1 2 sSf https sh rustup rs sh 安装过程中 最后一步需要输入选择 输入1是
  • 光线追踪

    光追比较流行 其实很多公司也没用到 学习了下 就是反过来进行了 颜色从物体到像素 改为颜色从像素到物体了 碰撞检测就是射线和球之间的三角形关系 根据韦达定理可以判断 不相交 一个值或者两个值 即中学数学 上图
  • windows更改远程桌面端口命令和手动更改方法

    打开命令提示符窗口 按 Win R 快捷键 输入 cmd 然后按 Enter 键 输入以下命令并按 Enter 键 例子 reg add HKLM SYSTEM CurrentControlSet Control Terminal Serv
  • 买彩票能中大奖?用Java盘点常见的概率悖论

    引言 双色球头奖概率与被雷劈中的概率哪个高 3人轮流射击 枪法最差的反而更容易活下来 让我们用Java来探索ta们 悖论1 著名的三门问题 规则描述 你正在参加一个游戏节目 你被要求在三扇门中选择一扇 其中一扇后面有一辆车 其余两扇后面则是
  • C++进阶篇5:字符串查找

    在STL中 字符串查找可以实现多种功能 例如 搜索单个字符 搜索子串 实现前向搜索 后向搜索 分别实现搜索第一个和最后一个满足条件的字符 或子串 要明确的一点是 所有查找find 函数的返回值均是size type类型 即无符号整数类型 该
  • Qt connect信号槽多次定义,会多次触发槽函数

    问题描述 点击Websocket 连接 按钮的时候将open连接到指定的地址 websocket在连接成功后会发出 connected信号 同时我们在初始化的时候就将 connected信号和我们的onconnected 函数建立连接 on