一、认识
本文探讨了事件循环在Qt库中的核心作用,如QCoreApplication、QApplication和对话框中的exec()函数。介绍了事件循环的工作原理,如何处理嵌套事件,以及如何通过QEventLoop实现非阻塞操作,如定时器和对话框显示的同步。
事件循环简介
可以看这篇文章 简介
搞清楚 1. 一个简单的事件循环就是一个while循环体;
2. QT程序中main函数中的app.exec()
实际就是启动事件循环; 实际上就是已通过创建QEventLoop事件循环对象来开启事件循环。
事件循环的基本构成:
通常一个线程中有 事件队列、事件调度器、事件循环 三部分构成。
其中,一个线程只有一个事件队列和一个事件调度器。可以有若干个事件循环。
事件调度器 和 事件循环 的关系
事件调度器:
负责从操作系统接收原始事件。 (事件调度器来处理事件--和外界交互。事件循环不管)
将接收到的事件放入事件队列。()
确保事件按照正确的顺序被处理。
事件循环:
控制事件处理的开始和结束。
从事件队列中取出事件并分发给相应的事件处理对象。
确保事件在适当的时机被处理。
事件处理
明确几个关键点:
事件队列:事件队列是存储待处理事件的地方,由事件调度器管理。
事件调度器:
事件循环:事件循环负责控制何时处理事件,以及如何处理事件。
执行队列:实际上并不是单独的“执行队列”,而是事件处理逻辑的一部分,由事件调度器和事件循环协作完成。