美文网首页
2020-11-20 Qt事件循环

2020-11-20 Qt事件循环

作者: hangzhou吴彦祖 | 来源:发表于2020-11-20 16:19 被阅读0次

Qt事件循环:从队列中不断取出消息、处理消息的过程。

Qt会接管windows的原生窗口消息,翻译成Qt消息,派发给程序下面的各个子对象。

起始于:QCoreApplication::exec()。 如果没有消息循环的话 Qt信号槽无法使用,举个例子

通过QueuedConnection连接的信号,其实是将一个事件压入了消息循环,如果没有QCoreApplication::exec(),那么这个消息循环将永远无法派发到指定的对象.

二:QObject的线程相关性

我们创建了一个QObject的时候,它会与创建自己的线程进行绑定;它参与的消息循环,其实就是它所在线程的消息循环,如果没有消息循环的话 QThread上的QObject甚至无法接受到事件;

另外就是两个不同的线程的QObject如果需要相互通信的话,只能通过QueuedConnection的方式,异步通知对方线程,在下一轮消息循环处理QObject的消息。,QObject应该是它参与哪个消息循环,就由哪个来创建, 因此AutoQueuedConnection 直连 应该是在同一个线程的。不同的线程的话通过事件循环、信号与曹 是优雅的方式。重点: 不同线程的对象是无法直接通信的。需要通过事件。

三:

windows消息循环:

1: 注册窗口类,指定窗口处理函数

2:创建一个窗体  一般来说 创建很多窗口 可以使用同一个窗口处理函数/

然后从消息队列里面取出事件、分发事件、系统将事件分发到不同窗口处理函数。

每一个线程有一份ThreadData,共享同一份事件队列。

四: Qt事件过滤器 :一个QObject对象可以监视发送其他的QObject对象的事件; 你要检测谁,说要去你这边注册一下,这不 有个label来注册了,注册之后我就可以截获你的事件。在我这里面操作啦。 比如点击 画图啥的

相关文章

  • 2020-11-20 Qt事件循环

    一 Qt事件循环:从队列中不断取出消息、处理消息的过程。 Qt会接管windows的原生窗口消息,翻译成Qt消息,...

  • QT事件循环

    Qt 事件和信号的关系 Qt的事件是windows的底层消息封装而成的。这个消息和MFC里的消息是同一概念,都是指...

  • Qt事件循环原理

    之前在信号槽的时候讲到了如果connect的时候选择QueuedConnection,Qt会把槽函数包装成一个QM...

  • 一个 Qt 事件对象的旅行

    Qt 的事件来自操作系统,Qt自己产生。当Qt应用程序运行时,qt有一个未处理的事件队列,每个事件处理周期内,将处...

  • Qt中事件的理解(1)

    1、Qt中的事件 Qt中,事件作为一个对象,继承自QEvent类,常见的有键盘事件QKeyEvent、鼠标事件QM...

  • Qt学习-(虚函数,界面原理等)

    Qt学习 事件:事件在Qt分很多种,例如鼠标,键盘,定时器,窗体大小,任何动作在GUI都可以触发某种事件, 根据C...

  • Qt开发系列3——Qt中的核心技术1

    简介 这里简单介绍Qt的一些核心机制,具体参见Qt文档。 主要包含内容: Qt的信号和槽,以及事件机制 Qt Ob...

  • QT循环队列

    Qt实现环形缓冲区的两种方法[https://blog.csdn.net/caoshangpa/article/d...

  • 浅谈JavaScript事件循环与Vue的批量异步更新策略

    在介绍事件循环之前,首先要明确以下几个关键概念。事件循环,同步和异步任务,宏任务,微任务。 一.事件循环 事件循环...

  • 并发:事件循环 & asyncio

    1. 事件循环机制 1.1. 什么是事件循环 事件循环(Event Loop),即通过轮询方法监控事件; asyn...

网友评论

      本文标题:2020-11-20 Qt事件循环

      本文链接:https://www.haomeiwen.com/subject/qdndiktx.html