简述
QEvent 类是所有事件类的基类,事件对象包含事件参数。
Qt 的主事件循环(QCoreApplication::exec())从事件队列中获取本地窗口系统事件,将它们转化为 QEvents,然后将转换后的事件发送给 QObjects。
一般来说,事件来自底层窗口系统(spontaneous() 返回 true),但也可以使用 QCoreApplication::sendEvent() 和 QCoreApplication::postEvent()(spontaneous() 返回 false)来手动发送事件。
QObjects 通过调用它们的 QObject::event() 函数接收事件。该函数可以在子类中重新实现,来处理自定义的事件以及添加额外的事件类型,QWidget::event() 就是一个很著名的例子。默认情况下,像 QObject::timerEvent() 和 QWidget::mouseMoveEvent() 这样的事件可以被发送给事件处理函数。QObject::installEventFilter() 允许一个对象拦截发往另一个对象的事件。
基本的 QEvent 只包含了一个事件类型参数。QEvent 的子类包含了额外的描述特定事件的参数。
成员类型
枚举QEvent::Type:
这个枚举类型定义了Qt中有效的事件类型。事件类型和每个类型的专门类如下:
常量 | 值 | 描述 |
---|---|---|
QEvent::None | 0 | 不是一个事件 |
QEvent::ActionAdded | 114 | 一个新 action 被添加(QActionEvent) |
QEvent::ActionChanged | 113 | 一个 action 被改变(QActionEvent) |
QEvent::ActionRemoved | 115 | 一个 action 被移除(QActionEvent) |
QEvent::ActivationChange | 99 | Widget 的顶层窗口激活状态发生了变化 |
QEvent::ApplicationActivate | 121 | 这个枚举已被弃用,使用 ApplicationStateChange 代替 |
QEvent::ApplicationActivated | ApplicationActivate | 这个枚举已被弃用,使用 ApplicationStateChange 代替 |
QEvent::ApplicationDeactivate | 122 | 这个枚举已被弃用,使用 ApplicationStateChange 代替 |
QEvent::ApplicationFontChange | 36 | 应用程序的默认字体发生了变化 |
QEvent::ApplicationLayoutDirectionChange | 37 | 应用程序的默认布局方向发生了变化 |
QEvent::ApplicationPaletteChange | 38 | 应用程序的默认调色板发生了变化 |
QEvent::ApplicationStateChange | 214 | 应用程序的状态发生了变化 |
QEvent::ApplicationWindowIconChange | 35 | 应用程序的图标发生了变化 |
QEvent::ChildAdded | 68 | 一个对象获得孩子(QChildEvent) |
QEvent::ChildPolished | 69 | 一个部件的孩子被抛光(QChildEvent) |
QEvent::ChildRemoved | 71 | 一个对象时区孩子(QChildEvent) |
QEvent::Clipboard | 40 | 剪贴板的内容发生改变 |
QEvent::Close | 19 | Widget 被关闭(QCloseEvent) |
QEvent::CloseSoftwareInputPanel | 200 | 一个部件要关闭软件输入面板(SIP) |
QEvent::ContentsRectChange | 178 | 部件内容区域的外边距发生改变 |
QEvent::ContextMenu | 82 | 上下文弹出菜单(QContextMenuEvent) |
QEvent::CursorChange | 183 | 部件的鼠标发生改变 |
QEvent::DeferredDelete | 52 | 对象被清除后将被删除(QDeferredDeleteEvent) |
QEvent::DragEnter | 60 | 在拖放操作期间鼠标进入窗口部件(QDragEnterEvent) |