Qt connect 第五个参数
一,Qt connect 函数原型如下,第五个(5种)参数根据接收者和发送者是否在同一个线程不同
QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)
二,Qt::ConnectionType 详解
- Qt::AutoConnection
默认值,使用此值,连接类型会在信号发射时决定。如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型,如果接收者和发送者不在同一个线程,则自动使用Qt::QueuedConnection类型。
- Qt::DirectConnection
槽函数运行于信号发送者所在的线程,效果上就像是直接在信号发送的位置调用了槽函数。多线程下比较危险,可能会造成崩溃。
- Qt::QueuedConnection
槽函数在控制回到接收者所在线程的事件循环时被调用,槽函数运行于信号接收者所在线程。发送信号后,槽函数不会立即被调用,等到接收者当前函数执行完,进入事件循环之后,槽函数才会被调用。多线程下用这个类型。
- Qt::BlockingQueuedConnection
槽函数的调用时机与Qt::QueuedConnection 一致,不过在发送完信号后,发送者所在线程会阻塞,直到槽函数运行完。接收者和发送者绝对不能在一个线程,否则会死锁。在多线程间需要同步的场合会用到这个。
- Qt::UniqueConnection
此类型可通过 “|” 与以上四个结合在一起使用。此类型为当某个信号和槽已经连接时,在进行重复连接时就会失败,可避免重复连接。如果重复连接,槽函数会重复执行。
三, lambda表达式方式 连接
如果槽函数很简单,可以直接利用 lambda表达式进行连接,以减少代码量
//这里需要注意 Lambda表达式是C++ 11 的内容,所以,需要再Pro项目文件中加入 CONFIG += C++ 11QObject::connect(ui->pushButton,&QPushButton::clicked,[=](){qDebug()<<"lambda 表达式";});
Qt connect 第五个参数相关推荐
- QT之connect的第五个参数(信号与槽的使用)(qt对象树)
目录 一 .QT connect 第5个参数一般不填,为默认值. 二.信号 三.connect函数原型 四.信号与槽的多种用法 五.槽的属性 一 .QT connect 第5个参数一般不填,为默认值. ...
- Qt面试题(一)Qt信号槽第五个参数
connect()第五个参数的作用,指定连接方式:默认,队列,直接 多线程时才有意义 默认的时候 如果是多线程,默认使用队列 如果是单线程, 默认使用直接方式 ...
- connect函数的第五个参数特点
connect()第五个参数的作用,指定连接方式:默认,队列,直接 多线程时才有意义 默认的时候 如果是多线程,默认使用队列 如果是单线程, 默认使用直接方式 ...
- Qt工作笔记-对connect的第五个参数的研究
本程序配合了QObject::sender,关于QObject::sender在下面这个链接中: https://blog.csdn.net/qq78442761/article/details/81 ...
- Qt connect有第5个参数你知道吗?
Qt开发中信号槽是常用的技术,正常使用时都是4个参数,很少用到第5个,下面来看看connect的声明: 第五个参数是连接类型,声明如下: enum ConnectionType {AutoCo ...
- QT信号槽第五个参数
connect用于连接qt的信号和槽,在qt编程过程中不可或缺.它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置. Qt::AutoConnection: 默认值,使用 ...
- Qt connect()的第五种重载[=](){}
Qt connect()的第五种重载[=](){} 进行网络相关编程时,需要使用信号和槽,碰到一个={}作为槽函数的语句. [用途]实现函数内部的信号接收. [原语句] connect(tcpSock ...
- qt connect重复 槽函数会重复触发
现象 ClassA::ClassA(QWidget* pParent):QWidget(pParent) {connect(m_ui.btnNext, SIGNAL(clicked()), this, ...
- QT开发(五十)——QT串口编程基础
QT开发(五十)--QT串口编程基础 一.QtSerialPort简介 1.串口通信基础 目前使用最广泛的串口为DB9接口,适用于较近距离的通信.一般小于10米.DB9接口有9个针脚. 串口通信的主要 ...
最新文章
- 《Ceph源码分析》——第1章,第5节RADOS
- 两个有序线性表的合并(线性表使用 Vector表示)
- chmod 777后还是无法写入
- linux-libre 电脑,[图]没有任何专有代码 GNU Linux-libre 5.1-gnu内核正式发布
- 第六课-Android四大组件之Activity
- MongoDB Replica Set 选举过程
- android markdown编辑器,推荐几款好用的Markdown编辑器
- ubuntu固定内网ip_Ubuntu 设置固定ip地址
- 股东控股关系图谱简化版
- php微信公众号报修系统,微信公众号如何实现在线报修系统?
- 苹果手机换了屏显示无服务器,苹果手机出现“无法验证此 iPhone 屏幕是正品”怎么办...
- “你的论文充斥着垃圾,写作一塌糊涂,我读着读着都想撕了它”
- 最近很火的OkHttp剥洋葱系列
- linux shell ifs,shell - IFS分隔符
- iOS-记一些官网地址
- MSP430 G2553 单片机 三色灯 霓虹灯 呼吸灯 跑马灯 一体
- 12种论坛常用的推广方法
- python 爬取17k网址的个人书架内容
- 永磁同步电机系统控制
- Python同Java同Js语言语法区别之四判断字符串列表字典是否相等