QT信号槽第五个参数
connect用于连接qt的信号和槽,在qt编程过程中不可或缺。它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置。
Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定。如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型。如果接收者和发送者不在一个线程,则自动使用Qt::QueuedConnection类型。
Qt::DirectConnection:槽函数会在信号发送的时候直接被调用,槽函数运行于信号发送者所在线程。效果看上去就像是直接在信号发送位置调用了槽函数。这个在多线程环境下比较危险,可能会造成奔溃。
Qt::QueuedConnection:槽函数在控制回到接收者所在线程的事件循环时被调用,槽函数运行于信号接收者所在线程。发送信号之后,槽函数不会立刻被调用,等到接收者的当前函数执行完,进入事件循环之后,槽函数才会被调用。多线程环境下一般用这个。
Qt::BlockingQueuedConnection:槽函数的调用时机与Qt::QueuedConnection一致,不过发送完信号后发送者所在线程会阻塞,直到槽函数运行完。接收者和发送者绝对不能在一个线程,否则程序会死锁。在多线程间需要同步的场合可能需要这个。
Qt::UniqueConnection:这个flag可以通过按位或(|)与以上四个结合在一起使用。当这个flag设置时,当某个信号和槽已经连接时,再进行重复的连接就会失败。也就是避免了重复连接。
参考:https://blog.csdn.net/life_is_too_hard/article/details/52089723
https://blog.csdn.net/theSaltiestFish/article/details/79969411
QT信号槽第五个参数相关推荐
- Qt面试题(一)Qt信号槽第五个参数
connect()第五个参数的作用,指定连接方式:默认,队列,直接 多线程时才有意义 默认的时候 如果是多线程,默认使用队列 如果是单线程, 默认使用直接方式 ...
- Qt信号槽如何传递参数
Qt信号槽如何传递参数 利用Qt进行程序开发时,有时需要信号-槽来完成参数传递.带参数的信号-槽在使用时,有几点需要注意的地方,下面结合实例进行介绍. 1. 当信号与槽函数的参数数量相同时,它们参数类 ...
- Hello Qt——Qt信号槽机制源码解析
基于Qt4.8.6版本 一.信号槽机制的原理 1.信号槽简介 信号槽是观察者模式的一种实现,特性如下: A.一个信号就是一个能够被观察的事件,或者至少是事件已经发生的一种通知: B.一个槽就是一个观察 ...
- Qt信号槽机制-传递自定义数据类型(qRegisterMetaType)
Qt信号槽机制-传递自定义数据类型qRegisterMetaType 前言 前言 通过Qt内置的数据类型进行信号与槽参数传递很方便:如果是自己定义的类型如果想使用signal/slot来传递的话,则没 ...
- Qt信号槽中connect五个重载函数详细说明,连接类型Qt::DirectConnection,Qt::QueuedConnection,附详细代码
想说在前面的两句话. 信号槽是 Qt 框架引以为豪的机制之一.熟练使用和理解信号槽,能够设计出解耦的非常漂亮的程序,有利于增强我们的程序设计能力. 信号与槽是Qt学习的重点,但不是难点. 本篇介绍Qt ...
- QT信号槽的5种连接方式
在面试中,这是一个经常被问到的问题点,也是刚刚上qt的工程师不会去注意的一个点. qt源代码定义的连接方式如下: 1.Qt::AutoConnection 一般信号槽不会写第五个参数,其实使用的默认值 ...
- 【Qt开发经验】Qt信号槽连接不成功问题原因汇总
以下几种情况会导致信号槽连接不成功,下面分别描述. 1. 拥有信号槽的类,必须继承QObject,声明Q_OBJECT宏. Qt帮助手册里搜索 "Signals & Slots&qu ...
- Qt 信号槽 signals slots 特点 限定符的区别
1. 信号槽应用于对象间通信. 2. 信号槽的处理借助于moc(Meta Object Compiler)工具,Q_OBJECT宏通知compiler使用moc工具进行moc扩展. 3. 对象中的信号 ...
- Qt 信号槽的应用(三)
传递自定义结构体 在项目开发过程中,不可能只用基本类型或一些Qt对象来作为信号槽的参数,结构体是必不可少的.由于结构体无法被信号槽识别,需要用Q_DECLARE_METATYPE来注册结构体. 以下继 ...
最新文章
- ICLR 2019最佳论文揭晓!NLP深度学习、神经网络压缩夺魁 | 技术头条
- JavaScript常见面试题和答案
- Python实现自动推本地github博客到远程仓库
- 深度学习图像融合_基于深度学习的图像超分辨率最新进展与趋势【附PDF】
- Flash与.NET的通信(三):LoadVars对象的应用
- openeim 成片的蝴蝶兰盛开在绿树之间
- MySql-Mysql技术内幕~SQL编程学习笔记(1)
- Java Web GenericServlet
- JavaScript入门基础知识总结
- 软件开发学习的5大技巧,你知道吗?
- 手机电视机屏幕分辨率
- Labview2018视频教程(共51节)
- uboot 引导linux内核 参数mem=size,Uncompressing Linux..... done, booting the kernel.
- 【转】Windows Linux MacOS操作系统的区别
- Nginx 配置实现请求转发功能
- 计算机报名初始密码,计算机报名密码忘了怎嘛办
- MySQL之账号管理、建库以及四大引擎
- JavaScript基础知识学习与刷题
- Slog41_支配vue框架初阶项目之博客网站-单页-登陆成功页面的布局和定位
- Brave浏览器保护用户隐私第2招:第三方页面垃圾过滤
热门文章
- 沈阳地铁线程规划图(地铁1号 -- 地铁5号)
- 专有网络VPC (产品简介,使用限制)
- 线性代数学习笔记——第七十六讲——矩阵的合同
- Plone学习笔记 ( by quqi99 )
- Oracle 修改表存储空间
- 小米平板2刷哪个系统更流畅_小米平板2 Windows版本评测:流畅度不如MIUI 7版 胜在更智能...
- C语言 | 结构体成员数组赋值的问题
- hbase2.x HBCK Report Region Holes Overlaps问题修复
- [原创]看GONZO《最终兵器彼女》的感想
- JAVA架构师面试分享—链家网