QT信号与槽的连接方式

2023-11-12

一.Qt::AutoConnection
Qt::AutoConnection表示系统自动选择相应的连接方式,如果信号与槽在同一线程,就采用Qt::DirectConnection, 
如果信号与槽不在同一线程,将采用Qt::QueuedConnection的连接方式。    

二.Qt::DirectConnection
 Qt::DirectConnection表示一旦信号产生,立即执行槽函数。   (主线程发送信号给子线程,connect 在子线程中 ,则这个参数要使用  Qt::DirectConnection ,槽函数在子线程中立即执行)

三.Qt::QueuedConnection
 Qt::QueuedConnection表示信号产生后,将发送Event给你的receiver所在的线程,postEvent(QEvent::MetaCall,...), 
slot函数会在receiver所在的线程的event loop中进行处理。

四. Qt::BlockingQueuedConnection
 Qt::BlockingQueuedConnection表示信号产生后调用sendEvent(QEvent::MetaCall,...), 
在receiver所在的线程处理完成后才会返回;只能当sender,receiver不在同一线程时才可以。  

五.   Qt::UniqueConnection
 Qt::UniqueConnection表示只有它不是一个重复连接,连接才会成功。如果之前已经有了一个链接(相同的信号连接到同一对象的同一个槽上),那么连接将会失败并将返回false。    
 Qt::AutoCompatConnection与QT3保持兼容性    
 说明一下,对于任何的QThread来说,其线程只存在于run()函数内,其它的函数都不在线程内,所以此处要采用Qt::BlockingQueuedConnection,    
 因为当SOCKET有数据到达时就会发出readyRead()信号,但是此时可能之前的receiveFile()还未执行完毕,之前使用的Qt::AutoConnection,    
 结果传输大文件的时候就会出错,原因就在于只要有数据到达的时候,就会连接信号,但是数据接收还没处理完毕,而Qt::BlockingQueuedConnection会阻塞    
 此连接,直到receiveFile()处理完毕并返回后才发送信号。 
qDebug()<<"run thread:"<<QThread::currentThreadId();  
    connect(tcpSocket,SIGNAL(readyRead()),this,SIGNAL(receiveSgl(tcpSocket))); 
   connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(receiveFile()),Qt::BlockingQueuedConnection); 
    exec(); 
 

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

QT信号与槽的连接方式 的相关文章

  • QT字节数组类QByteArray

    QT字节数组类QByteArray 初始化 访问某个元素 截取字符串 获取字节数组的大小 数据转换与处理 Hex转换 数值转换与输出 字母大小写转换 字符串数值转化为各类数值 QBQyteArray和char 互转 QByteArray 和
  • 聊聊Qt中的Widget调色板QPalette

    在实际的应用开发中 经常需要对某个窗体或某个控件的颜色外观 如背景色 前景色等进行设置 已达到界面美化的效果 Qt中的窗体或控件都是Widget类 Qt中提供的调色板QPalette类就是专门用于管理控件的外观显示 QPalette类相当于
  • Qt源码分析之QObject

    在分析源码之前 我们先来介绍下Pimpl机制 Pimpl机制介绍 Pimpl private implementation 字面意思是私有实现 具体实现是将类的 假设类A 私有数据和函数放入一个单独的类 假设类Pimpl 中 然后在类A的头
  • QT 5 中元对象系统的改变

    Qt 5 的元对象系统作出了一定的改变 既有底层变化 又有 API 的变化 其中有些修改与 Qt 4 不是源代码兼容的 本文将介绍这些改变 以及如何修改现有代码 使其能够使用 Qt 5 进行编译 同时 我们也将阐述下新增加的一些 API 使
  • Qt之QGraphicsView进阶篇

    前言 上一章节介绍了 QGraphicsView 中的基础内容 具体请参考 Qt之QGraphicsView入门篇 这一章节我们来具体了解一下 GraphicsView 框架中有哪些特性 缩放与旋转 QGraphicsView 通过 QGr
  • Qt中实现单击button按钮发送单击信号,触发searchitem(QModelIndezparent,qsringtxt)槽函数,搜索后设置选中状态并设置背景色为红色。

    首先 我们依旧需要先创建一个 QPushButton 按钮 并且还需要创建一个槽函数 searchitem QModelIndex parent QString txt 来接收其发射的信号 接下来 在槽函数 searchitem 中 我们需
  • Qt的MOC机制

    Qt的MOC机制 Qt扩展了C 使得开发者拥有很多方便使用的工具 如何使用Qt提供的特性呢 比如信号与槽 那就需要开发者在类中声明Q OBJECT宏 这样程序员就能使用Qt提供的功能了 为什么这样可以呢 先从C 文件的编译过程开始讲 一般C
  • 成为Qt开发大牛,从入门到精通,一步一步走完整个学习路线!

    简介 本文为 C QT 学习路线大纲 资料 文章底部 Qt 可以做什么 Qt 虽然经常被当做一个 GUI 库 用来开发图形界面应用程序 但这并不是 Qt 的全部 Qt 除了可以绘制漂亮的界面 包括控件 布局 交互 还包含很多其它功能 比如多
  • 「Qt」事件概念

    0 引言 在本文所属专栏的前面的文章里 我们介绍了Qt的 信号 Signal 与 槽 Slot 机制 信号 Signal 与 槽 Slot 机制是 Qt 框架用于多个对象之间通信的 是 Qt 的核心特性 也是 Qt 与其他框架最大的不同之处
  • Qt:读写SVG

    Qt 读写SVG 绘制SVG图形 SvgView SvgView const QString file QWidget parent QWidget parent doc new QSvgRenderer file this QSvgRen
  • QT信号与槽的连接方式

    一 Qt AutoConnectionQt AutoConnection表示系统自动选择相应的连接方式 如果信号与槽在同一线程 就采用Qt DirectConnection 如果信号与槽不在同一线程 将采用Qt QueuedConnecti
  • QT+PMAC联合开发

    最近接触到PMAC的IMAC FX控制器 虽然他的主程序是写在下位机 但还是需要上位机和它进行通信和交互 官方提供的上位机DEMO都是基于VC C 和VB等 对于QT的用户 没有很直接的代码供参考 PMAC提供了COM组件 供上位机调用 在
  • Qt Http请求,post和get的两种方式

    今天我们介绍一下QT的http请求 这里有post和get两种方式 一 post请求方式 参数分为网址和具体请求值两个部分 有时候还需要设置头信息 看具体情况定 1 void MainWindow sendPostRequest 2 3 Q
  • Qt-4.7.2在dm365下的移植

    此篇为我的上一篇博客 Qt 4 7 2及QtEmbedded 4 7 2在ubuntu11 10下的安装 后续 主要参考 博客http blog chinaunix net uid 25652733 id 291521 html 同样 参照
  • Qt进程间通信

    进程是操作系统的基础之一 一个进程可以认为是一个正在执行的程序 我们可以把进程当做计算机运行时的一个基础单位 关于进程的讨论已经超出了本章的范畴 现在我们假定你是了解这个概念的 在 Qt 中 我们使用 QProcess 来表示一个进程 这个
  • QT 解决“ qt creator 修改UI后,运行无改变”问题

    只需要将 项目 中的 Shadow build 勾选去掉 重新构建项目 运行即可看到修改后的效果
  • QT 中的延时函数和精准定时器的用法

    一 QT中的延时函数比较常用的三种方法 第一种 void MainWindow Delay int msec 这个最准 非阻塞方式延时 现在很多人推荐的方法 QEventLoop loop QTimer singleShot msec lo
  • Qt数据库表格添加右键选项功能及右键按钮可能不显示问题解决方法

    Qt数据库表格添加右键选项功能及右键按钮可能不显示问题解决方法 文章目录 Qt数据库表格添加右键选项功能及右键按钮可能不显示问题解决方法 1 前言 2 思路及主要代码 3 注意点 右键时按钮不出现 4 结果 1 前言 Qt数据库操作中大部分
  • Qt QModbusTcpServer类

    1 概述 QModbusTcpServer类表示使用TCP服务器与Modbus客户端进行通信的Modbus服务器 Header include
  • 嵌入式开发之移植MQTT到RK3568

    目录 前言 一 下载qmqtt源码 二 编译库文件 三 移植到RK3568 3 1 移植动态库libQt5Qmqtt 四 联机测试 4 1 制作demo 4 1 1 创建demo新项目 4 1 2 添加network模块支持 4 1 3 添

随机推荐

  • HCIE-Cloud Computing v2.0 lab机考全讲解

    阅读说明 中的内容是 考生的经验 建议 理解 五星表示为 必须背下来 文章目录 一 准备 题型介绍 考试环境 考试地址和密码 必知流程 二 实战 2 1 宏观方面 整体讲解 2 1 1 拓扑 类型接口 2 1 2 简述 2 2 微操 分题型
  • python画正方形的代码_python绘制正方形螺旋线的代码分享

    python绘制正方形螺旋线的代码分享 发布时间 2020 04 28 09 56 56 来源 亿速云 阅读 219 作者 小新 这篇文章主要为大家详细介绍了python绘制正方形螺旋线的代码分享 文中示例代码介绍的非常详细 具有一定的参考
  • Vite和Webpack如何使用CDN包

    为了精简打包输出的dist目录大小 我们可以引入CDN外部包的方式 来缩小打包的体积 加快打包速度 这里介绍Vite和Webpack中如何引入React CDN外部包 一 Vite引入CDN包 1 安装插件 npm i vitejs plu
  • Go实现两个Goroutine通信

    实现两个goroutine通信 要求如下 实现pingpong效果 保证程序能任意时长执行 且收到ctrl c信号之后 全身而退 即保证各个goroutine完整退出 在第三个goroutine中 可随时查找前两个goroutine各自发送
  • ASN.1编码方式详解

    ASN ASN 1 Abstract Syntax Notation dot one 抽象记法1 数字1被ISO加在ASN的后边 是为了保持ASN的开放性 可以让以后功能更加强大的ASN被命名为ASN 2等 但至今也没有出现 描述了一种对数
  • react学习记录-状态提升

    文章目录 前端应用状态管理 状态提升 课后习题 前端应用状态管理 状态提升 我们在使用state存放数据的时候 应当倾向于把数据放在父组件上 这是为了在父组件下的兄弟组件都在依赖或者影响这个数据的时候 能够进行共享 避免让两个子孙组件分别取
  • c语言求斐波那契数列n项以及前n项和

    斐波那契数列的定义 f n f n 1 f n 2 n gt 1 n 0 f 0 0 n 1 f 1 1 自定义函数 递归写法 fbi 此函数求x项的斐波那契数 int fbi int x 斐波那契 if x lt 0 return 0 e
  • 支付场景的测试用例

    功能测试 1 是否可以正常支付 2 支付金钱的最大值 最小值 错误金额 3 支付中断继续支付是否成功 4 支付中断后结束支付 5 支付中断结束后再一次支付 兼容性 1 pc端 手机端 平板电脑 安全性 1 姓名会不会显示给对方 2 对方账户
  • 信息系统项目管理师第七章-----项目管理一般知识

    考察知识点 项目管理概述 项目的属性 项目管理的特征 项目管理的知识体系 项目生命周期 项目生命周期的特点 阶段的划分 产品生命周期与项目生命周期的关系 项目的组织方式 职能型 项目型 矩阵式 总结 相关术语解析 项目干系人stakehol
  • 光猫改桥接,手机如何访问光猫后台,只要一根网线就可以了

    光猫改桥接之后一般有四种方法可以访问光猫后台 一 电脑用网线直连光猫的LAN口 然后设置好对应IP 二 光猫自带WiFi功能的 就直接开启WiFi 连接对应的WiFi 三 路由器的WAN口支持双模式 即可以进行PPPOE拨号 同时支持DHC
  • django根据已有数据库表生成model类。Django生成迁移文件,将迁移文件迁移到数据库

    根据已有的数据库表生成Django框架的APP中的models py代码 生成模型文件命令 python manage py inspectdb 将模型导入APP python manage py inspectdb gt app mode
  • 华三vlan配置

    基于MAC地址划分vlan 配置思路 创建VLAN 100 VLAN 200 配置Device A和Device C的上行端口为Trunk端口 并允许VLAN 100和VLAN 200的报文通过 配置 Device B 的下行端口为Trun
  • FindWinow

    1 MFC中的Caption属性就是windowName属性
  • 初始TypeScript

    来自刚接触TypeScript的小菜鸡 养生青年阿贺 一 什么是TypeScript 1 TypeScript 是一款编程式语言 微软开发的 2 typescript式Javascript的超集 遵循了最新的ES6 ES5的规范 types
  • join后 on , and ,where 实例测试

    目录 一 join实现方式 一 原理 二 join 后用 on and 还是 where 区别 一 原理 二 on where实例 1 创建表和数据 2 测试语句和结果 三 on and实例 1 添加数据 2 测试语句和结果 一 join实
  • 时序预测

    时序预测 MATLAB实现NAR非线性自回归模型时间序列预测 目录 时序预测 MATLAB实现NAR非线性自回归模型时间序列预测 效果一览 基本介绍 程序设计 参考资料 效果一览
  • Linux创建100个用户并设置密码

    创建100个用户并且设置123456为密码 bin bash for i in 1 100 do useradd a i echo 123456 passwd stdin a i done 删除100个用户 要先进root用户 bin sh
  • 通过输出流将文档下载到本地

    导出Excel文档到本地 param path 文件将要保存的目录 ApiOperation value 下载Excel模板 RequestMapping value downloadDepartment xls method Reques
  • C++子类和基类的相互转换

    C 子类和基类的相互转换 1 基类对象指针可以隐式转换为子类对象指针 2 子类对象转换为基类对象 基类必须存在虚函数表 不然访问报错 include
  • QT信号与槽的连接方式

    一 Qt AutoConnectionQt AutoConnection表示系统自动选择相应的连接方式 如果信号与槽在同一线程 就采用Qt DirectConnection 如果信号与槽不在同一线程 将采用Qt QueuedConnecti