当前位置: 首页 > news >正文

QT事件循环和事件队列的理解

Qt的事件循环机制_qt事件循环流程-CSDN博客

QT-事件循环机制_qt线程事件循环-CSDN博客

 一、事件处理流程如图所示:

1.QCoreApplication::postEvent(QObject *receiver,QEvent *event):

  • QCoreApplication::postEvent()函数用于将事件异步地发送到目标对象。
  • 通过postEvent()函数发送的事件会被放入目标对象所属线程的事件队列中,然后立即返回,不会阻塞当前线程
  • 事件将在目标对象所属线程的事件循环中被处理,处理时间取决于事件队列中的调度情况。
  • 使用postEvent()函数可以在不阻塞当前线程的情况下,将事件发送到目标对象,然后继续执行当前线程的后续代码。

2.QCoreApplication::sendEvent(QObject *receiver,QEvent *event):

  • QCoreApplication::sendEvent()函数用于将事件同步地发送到目标对象。
  • 通过sendEvent()函数发送的事件会立即被目标对象的事件处理函数处理,发送事件的线程会等待事件处理完成,然后继续执行后续代码。
  • sendEvent()函数会返回一个布尔值,表示事件是否被成功处理。
  • 同步事件分发适用于需要立即处理事件且会阻塞发送事件的线程,需要等待事件处理完成的情况。

总结:

  • 同步事件分发会导致发送事件的线程等待事件处理完成,适用于需要立即处理并等待处理完成的情况。
  • 异步事件分发会将事件放入目标对象所属线程的事件队列中,不会阻塞发送事件的线程,适用于非阻塞地发送事件,并在目标对象所属线程的事件循环中异步处理的情况。
http://www.lryc.cn/news/224318.html

相关文章:

  • 【Android】画面卡顿优化列表流畅度一
  • SNP应邀参加2023中国企业数字化转型峰会暨赛意用户大会
  • 黑豹程序员-架构师学习路线图-百科:Knife4j API接口文档管理
  • PHP安全问题:远程溢出、DoS、safe_mode绕过漏洞
  • 2023云计算发展
  • javaSE学习笔记(六)泛型,异常
  • C/C++轻量级并发TCP服务器框架Zinx-游戏服务器开发006:基于redis查找玩家姓名+游戏业务实现总结
  • 数字政府!3DCAT实时云渲染助推上海湾区数字孪生平台
  • react之Component存在的2个问题
  • 【论文阅读】Generating Radiology Reports via Memory-driven Transformer (EMNLP 2020)
  • IP协议相关技术
  • Visual Studio2022安装教程【图文详解】(大一小白)编译软件
  • matlab 点云最小二乘拟合平面(PCA法)
  • socks5代理和https代理有什么不同?各自有哪些优点?
  • springboot,spring框架返回204 status code的时候,会吞掉返回值
  • 6-爬虫-scrapy解析数据(使用css选择器解析数据、xpath 解析数据)、 配置文件
  • idea 一直卡在maven正在解析maven依赖
  • 警告:未配置spring boot 配置注解处理器
  • 详解虚拟DOM的原理
  • 开设自己的网站系类03安装数据库(centos版)
  • Flutter StreamBuilder 实现局部刷新 Widget
  • 【代码随想录】算法训练营 第十六天 第六章 二叉树 Part 3
  • 【C++数据结构】顺序存储结构的抽象实现
  • LeetCode75——Day31
  • 小白学爬虫:通过商品ID或商品链接封装接口获取淘宝商品销量数据接口|淘宝商品销量接口|淘宝月销量接口|淘宝总销量接口
  • AI:75-基于生成对抗网络的虚拟现实场景增强
  • 【MySQL数据库】| 索引以及背后的数据结构
  • 家用电脑做服务器,本地服务器搭建,公网IP申请,路由器改桥接模式,拨号上网
  • 原神游戏干货分享:探索璃月的宝箱秘密,提高游戏资源获取效率!
  • idea 2023 设置启动参数、单元测试启动参数