8 08_QT事件系统
目录
8.1 01_QEvent
8.1.1 01_概念
概念。
在Qt中QEvent是一个基础类, 用于表示各种类型的事件, 如鼠标点击、键盘输入、窗口大小调整等。 它提供了事件的通用接口, 并定义了事件处理的基本结构。 每个具体的事件类型都继承自QEvent。
8.1.2 02_特点
特点。
QEvent 的特点: 事件分类: Qt将所有类型的事件归类为不同的子类, 并根据事件的性质和来源进行命名 例如QMouseEvent, QKeyEvent, QResizeEvent。 事件处理机制: 当一个事件发生时, Qt会自动将该事件传递给相关的对象。 如果对象中定义了处理特定事件类型的槽函数, 则这些槽会被调用以响应事件。 postEvent 的特点: 发布事件: postEvent是一个方法, 用于在当前线程中向指定的对象发布一个事件。 这意味着你需要知道目标对象的引用, 并且该方法通常用于内部处理或特定场景下的事件触发。 异步性: 使用postEvent时, 事件的处理可能不会立即发生。 Qt会将事件放入事件队列中, 在适当的时候 例如在下一个事件循环周期 调用相应的槽函数来处理这些事件。
8.1.3 03_实践
实践。
首先定义了补天云事件类型 ButianyunEvent。 事件类型是QEvent中定义的User类型。 这个事件可以携带一些参数。 然后定义了补天云对象类型 ButianyunObject。 这个类型中重写了QT事件处理函数event。 在event函数中, 首先判断事件类型是否User类型。 如果是则进一步将QEvent事件 转换为ButianyunEvent事件。 如果转换成功, 则表示这确实是一个ButianyunEvent事件, 那么可以获取到事件携带的参数。 调用QEvent的accept函数, 表示事件已经被接受。 同时返回true表示这个事件 已经被这个对象处理了。 在main函数中, 首先创建对象, 然后使用postEvent函数异步投递事件。 这个事件在后续的事件循环中被处理。