
第9章 Qt事件机制与原理
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
9.1 事件机制与原理分析
9.1.1 Qt事件驱动的定义
在开发基于Qt的工程类项目时,我们通常会遇到一个特定类型的代码结构:int integer main accepting integer int argc and reference to character array char *argv;
QApplication a created with arguments argc and argv;
QMain window object declared as w initialized with default constructor;
show method invoked on instance w;return a.exec();}
尽管存在一定的复杂程度较高,但通过将Qt进行集成封装处理
这表明在调用a.exec()时,触发了 Qt 程序的事件消息循环。消息处理机制中包含回调、操作系统通过Windows和Linux等平台进行资源管理,从用户态向内核态过渡,在该过程中实现对进程、线程的管理和OS相关操作的底层机制处理。
特点:
- 依赖于操作系统以运行
- GUI应用程序的功能由用户操作启动的
- 系统在处理用户的交互时最先响应事件
- 每个 Qt 应用中的事件都被封装为独立的对象,并继承自 QEvent 父类。
9.1.3 Qt中的事件处理
每个 Qt 应用中的事件都被封装为独立的对象,并继承自 QEvent 父类。
在 Qt 中,所有类型的事件都遵循相同的封装和分发机制。具体来说:
- ①事件的产生:哪个组件生成了这些事件?
- 最容易想到的是我们的输入设备(如键盘、鼠标)会触发特定的事件类型,包括 keyPressEvent, keyReleaseEvent, mousePressEvent 和 mouseReleaseEvent。
- 这些事件被封装为 QKeyEvent 或 QMouseEvent 对象。
- ②Qt中事件的分发:通过 Qt 应用程序中的事件分发机制,QEvent 会被发送到相应的处理组件。对于非 GUI 程序,QEvent 会由 QCoreApplication 分发给QObject 的子类;而对于 GUI 程序,则由 QApplication 来负责将这些事件分配下去。
如何接收并处理事件?具体实现为QObject类。其三大职责包括内存管理、内省intropection和事件处理三方面。任何需要接收与处理事件的类都必须继承自QObject。
全部评论 (0)


