通常使用的connect,实际上最后一个參数使用的是Qt::AutoConnection类型:Qt支持6种连接方式。当中3中最主要:

1.Qt::DirectConnection(直连方式)(信号与槽函数关系类似于函数调用。同步运行)

当信号发出后。对应的槽函数将马上被调用。emit语句后的代码将在全部槽函数运行完成后被运行。

2.Qt::QueuedConnection(排队方式)(此时信号被塞到信号队列里了,信号与槽函数关系类似于消息通信。异步运行)

当信号发出后。排队到信号队列中,需等到接收对象所属线程的事件循环取得控制权时才取得该信号。调用对应的槽函数。emit语句后的代码将在发出信号后马上被运行。无需等待槽函数运行完成。

3.Qt::AutoConnection(自己主动方式)

Qt的默认连接方式,假设信号的发出和接收这个信号的对象同属一个线程,那个工作方式与直连方式同样。否则工作方式与排队方式同样。

4.Qt::BlockingQueuedConnection(信号和槽必须在不同的线程中。否则就产生死锁)

这个是全然同步队列仅仅有槽线程运行完毕才会返回。否则发送线程也会一直等待,相当于是不同的线程能够同步起来运行。

5.Qt::UniqueConnection

与默认工作方式同样。仅仅是不能反复连接同样的信号和槽。由于假设反复连接就会导致一个信号发出。相应槽函数就会运行多次。

6.Qt::AutoCompatConnection

是为了连接Qt4与Qt3的信号槽机制兼容方式。工作方式与Qt::AutoConnection一样。

假设这个參数不设置的话。默认表示的是那种方式呢?

没加的话与直连方式同样:当信号发出后,对应的槽函数将马上被调用。emit语句后的代码将在全部槽函数运行完成后被运行。在这个线程内是顺序运行、同步的。可是与其他线程之间肯定是异步的了。假设使用多线程,仍然须要手动同步。

Qt 信号-槽的同步与异步处理相关推荐

  1. Hello Qt——Qt信号槽机制源码解析

    基于Qt4.8.6版本 一.信号槽机制的原理 1.信号槽简介 信号槽是观察者模式的一种实现,特性如下: A.一个信号就是一个能够被观察的事件,或者至少是事件已经发生的一种通知: B.一个槽就是一个观察 ...

  2. Qt信号槽如何传递参数

    Qt信号槽如何传递参数 利用Qt进行程序开发时,有时需要信号-槽来完成参数传递.带参数的信号-槽在使用时,有几点需要注意的地方,下面结合实例进行介绍. 1. 当信号与槽函数的参数数量相同时,它们参数类 ...

  3. Qt信号槽机制-传递自定义数据类型(qRegisterMetaType)

    Qt信号槽机制-传递自定义数据类型qRegisterMetaType 前言 前言 通过Qt内置的数据类型进行信号与槽参数传递很方便:如果是自己定义的类型如果想使用signal/slot来传递的话,则没 ...

  4. QT信号槽的5种连接方式

    在面试中,这是一个经常被问到的问题点,也是刚刚上qt的工程师不会去注意的一个点. qt源代码定义的连接方式如下: 1.Qt::AutoConnection 一般信号槽不会写第五个参数,其实使用的默认值 ...

  5. Qt信号槽中connect五个重载函数详细说明,连接类型Qt::DirectConnection,Qt::QueuedConnection,附详细代码

    想说在前面的两句话. 信号槽是 Qt 框架引以为豪的机制之一.熟练使用和理解信号槽,能够设计出解耦的非常漂亮的程序,有利于增强我们的程序设计能力. 信号与槽是Qt学习的重点,但不是难点. 本篇介绍Qt ...

  6. 13.QT信号槽的连接方式

    QT的信号槽机制和线程的启动方式已经在前面的文章中写过了,本文主要是对信号槽的连接方式进行解读,信号槽的连接方式一共有5种: 1.Qt::DirectConnection 发出信号后立即调用槽函数. ...

  7. 6.QT信号槽的时序分析

    前面已经分析了元对象系统.MOC文件和信号槽的连接,本文分析下信号槽的时序 信号的触发通过emit关键字触发,以sigf1为例,通常是这样的 emit sigf1(t1) emit就是个空宏,在qob ...

  8. Linux 信号可靠性,同步,异步,多线程信号等介绍

    鉴于网上超多关于Linux信号处理相关的文章,本篇关于基本的信号知识不再普及,只提出一些平时不常关注或者关注不到的一些方面: 1. 信号可靠性:此可靠指的是信号是否会排队,并不是指信号会丢失(其实在也 ...

  9. 【Qt开发经验】Qt信号槽连接不成功问题原因汇总

    以下几种情况会导致信号槽连接不成功,下面分别描述. 1. 拥有信号槽的类,必须继承QObject,声明Q_OBJECT宏. Qt帮助手册里搜索 "Signals & Slots&qu ...

最新文章

  1. AI开源评测基准AI-Rank,为开源建立标准
  2. 支付宝二面:Mybatis接口Mapper内的方法为啥不能重载吗?我直接懵逼了...
  3. csv 字符串_爬虫|python读写csv文件的方法完成生涯规划表
  4. 去雾综述_【综述】图像去雾的前世今生
  5. JDK安装与配置(Windows 7系统)
  6. 5g消息服务器,《5G消息白皮书》内容解读:5G消息是什么服务?
  7. (素材源码) 猫猫学IOS(十二)UI之UITableView学习(上)LOL英雄联盟练习
  8. 拖拽批量上传图片如何保证 顺序_新手指南︱shopee店铺上架产品该如何操作?...
  9. 京沪无人驾驶复兴号高铁_河北高铁走到今天这一步,太不容易了...
  10. ICCV2013 录用论文(目标跟踪相关部分)
  11. User-Agent的变迁——浏览器大战之前世今生
  12. MapReduce----并行支持向量机(PSVM)第二部分之原始对偶内点法
  13. css实现--三角形/箭头(上下左右)--详细原理
  14. [已解决] Could not create connection to database server.
  15. 编程序找出1000之内的所有完数
  16. 2021年的保研之旅总结
  17. UTS安装与卸载-Linux篇
  18. 关于background背景和img图片
  19. Linux(CentOS、Ubuntu)下,磁盘分区、挂载
  20. 案例:自动登录12306

热门文章

  1. centos6.8安装xfce+vnc
  2. aes 加密_AES加密的安全问题
  3. focal loss dice loss源码_0815——W2V的TF源码阅读
  4. 收藏一些 JQuery 导航插件
  5. dbexception.java,mysql – org.h2.jdbc.JdbcSQLException:找不到列“ID”
  6. moore 数据集_可计算存储:数据压缩和数据库计算下推
  7. java rfb,github上开源的超轻量级人脸检测模型及github地址。
  8. Train Problem II(卡特兰数 组合数学)
  9. 普通的Spring Web项目正常启动,在访问某些JSP页面时,页面会报错 http://java.sun.com/jsp/jstl/core
  10. Logback MDC