一,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 第五个参数相关推荐

  1. QT之connect的第五个参数(信号与槽的使用)(qt对象树)

    目录 一 .QT connect 第5个参数一般不填,为默认值. 二.信号 三.connect函数原型 四.信号与槽的多种用法 五.槽的属性 一 .QT connect 第5个参数一般不填,为默认值. ...

  2. Qt面试题(一)Qt信号槽第五个参数

    connect()第五个参数的作用,指定连接方式:默认,队列,直接     多线程时才有意义     默认的时候     如果是多线程,默认使用队列     如果是单线程, 默认使用直接方式     ...

  3. connect函数的第五个参数特点

    connect()第五个参数的作用,指定连接方式:默认,队列,直接     多线程时才有意义     默认的时候     如果是多线程,默认使用队列     如果是单线程, 默认使用直接方式     ...

  4. Qt工作笔记-对connect的第五个参数的研究

    本程序配合了QObject::sender,关于QObject::sender在下面这个链接中: https://blog.csdn.net/qq78442761/article/details/81 ...

  5. Qt connect有第5个参数你知道吗?

      Qt开发中信号槽是常用的技术,正常使用时都是4个参数,很少用到第5个,下面来看看connect的声明:   第五个参数是连接类型,声明如下: enum ConnectionType {AutoCo ...

  6. QT信号槽第五个参数

    connect用于连接qt的信号和槽,在qt编程过程中不可或缺.它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置. Qt::AutoConnection: 默认值,使用 ...

  7. Qt connect()的第五种重载[=](){}

    Qt connect()的第五种重载[=](){} 进行网络相关编程时,需要使用信号和槽,碰到一个={}作为槽函数的语句. [用途]实现函数内部的信号接收. [原语句] connect(tcpSock ...

  8. qt connect重复 槽函数会重复触发

    现象 ClassA::ClassA(QWidget* pParent):QWidget(pParent) {connect(m_ui.btnNext, SIGNAL(clicked()), this, ...

  9. QT开发(五十)——QT串口编程基础

    QT开发(五十)--QT串口编程基础 一.QtSerialPort简介 1.串口通信基础 目前使用最广泛的串口为DB9接口,适用于较近距离的通信.一般小于10米.DB9接口有9个针脚. 串口通信的主要 ...

最新文章

  1. 《Ceph源码分析》——第1章,第5节RADOS
  2. 两个有序线性表的合并(线性表使用 Vector表示)
  3. chmod 777后还是无法写入
  4. linux-libre 电脑,[图]没有任何专有代码 GNU Linux-libre 5.1-gnu内核正式发布
  5. 第六课-Android四大组件之Activity
  6. MongoDB Replica Set 选举过程
  7. android markdown编辑器,推荐几款好用的Markdown编辑器
  8. ubuntu固定内网ip_Ubuntu 设置固定ip地址
  9. 股东控股关系图谱简化版
  10. php微信公众号报修系统,微信公众号如何实现在线报修系统?
  11. 苹果手机换了屏显示无服务器,苹果手机出现“无法验证此 iPhone 屏幕是正品”怎么办...
  12. “你的论文充斥着垃圾,写作一塌糊涂,我读着读着都想撕了它”
  13. 最近很火的OkHttp剥洋葱系列
  14. linux shell ifs,shell - IFS分隔符
  15. iOS-记一些官网地址
  16. MSP430 G2553 单片机 三色灯 霓虹灯 呼吸灯 跑马灯 一体
  17. 12种论坛常用的推广方法
  18. python 爬取17k网址的个人书架内容
  19. 永磁同步电机系统控制
  20. Python同Java同Js语言语法区别之四判断字符串列表字典是否相等

热门文章

  1. springboot项目之电影预告
  2. 注册商标流程,商标注册需要材料
  3. 基于CBO的执行计划简介
  4. 闭包 python_请问开集和闭集如何理解?
  5. 【计算机视觉】图像分割中FCN、DeepLab、SegNet、U-Net、Mask R-CNN等算法的讲解(图文解释 超详细)
  6. BCryptPasswordEncoder密码加密器
  7. 别浪费自己的高学历!+研究生应当常去的网站+北邮人!应该反思!+写给每一个北邮人
  8. oracle索引重建并行,oracle重建索引(一)
  9. 5G蝴蝶效应:孕育万亿级产业
  10. Labelme安装及使用教程