Qt 5.12.4版本的
本文的斜体文字和带有子类的翻译都是不确定的,别的翻译如果有错的还请指正,毕竟这么多事件我还没都用过
细节描述:
QEvent类是所有事件类的基类。事件对象包含事件参数。
Qt的主事件循环(QCoreApplication::exec())从事件队列中获取本地窗口系统事件,将它们转换为QEvents,并将转换后的事件发送到QObjects。
一般情况下,事件来自底层窗口系统(spontaneous()返回true),但也可以使用QCoreApplication::sendEvent()和QCoreApplication::postEvent()手动发送事件(spontaneous() 返回false)。
QObject通过调用它们的QObject::event()函数来接收事件。可以在子类中重新实现该函数,以自定义事件处理并添加其他事件类型;QWidget::event()就是一个值得注意的例子。默认情况下,事件被调度到事件处理程序,如QObject::timerEvent()和QWidget::mouseMoveEvent()。QObject::installEventFilter()允许对象拦截发往另一个对象的事件。
基本的QEvent只包含一个事件类型参数和一个“accept”标志。"accept"标志用accept()设置,用ignore()清除。它是默认设置的,但不要依赖于此,因为子类可能会选择在其构造函数中清除它。
QEvent的子类包含描述特定事件的附加参数。
另请参见QObject::event()、QObject::installEventFilter()、QCoreApplication::sendEvent()、QCoreApplication::postEvent()和QCoreApplication::ProcessEvent()。
enum QEvent::Type
此枚举类型定义Qt中的有效事件类型。事件类型和每种类型的专用类如下:
| 事件类型 | 解释 |
|---|---|
| QEvent::None | Not an event |
| QEvent::ActionAdded | 添加一个新action (QActionEvent) |
| QEvent::ActionChanged | 一个action被改变 (QActionEvent) |
| QEvent::ActionRemoved | 一个action被移除(QActionEvent) |
| QEvent::ActivationChange | widget的顶级窗口激活状态已更改 |
| QEvent::ApplicationActivate | 已废弃,改用ApplicationStateChange |
| QEvent::ApplicationActivated | 已废弃,改用ApplicationStateChange |
| QEvent::ApplicationDeactivate | 已废弃,改用ApplicationStateChange |
| QEvent::ApplicationFontChange | 默认应用程序字体已更改 |
| QEvent::ApplicationLayoutDirectionChange | 默认应用程序布局方向已更改 |
| QEvent::ApplicationPaletteChange | 默认应用程序调色板已更改 |
| QEvent::ApplicationStateChange | 应用程序的状态已更改 |
| QEvent::ApplicationWindowIconChange | 应用程序的图标以改变 |
| QEvent::ChildAdded | 对象得到子对象(QChildEvent) |
| QEvent::ChildPolished | A widget child gets polished (QChildEvent) |
| QEvent::ChildRemoved | 一个对象失去子对象 (QChildEvent) |
| QEvent::Clipboard | 剪贴板内容已更改 |
| QEvent::Close | Widget关闭 (QCloseEvent) |
| QEvent::CloseSoftwareInputPanel | 一个widget想要关闭软件输入面板 (SIP) |
| QEvent::ContentsRectChange | widget的内容矩形的边距已更改 |
| QEvent::ContextMenu | 上下文弹出菜单 (QContextMenuEvent) |
| QEvent::CursorChange | widget的鼠标已改变 |
| QEvent::DeferredDelete | 对象清理后将被删除 (QDeferredDeleteEvent) |
| QEvent::DragEnter | 在拖放操作期间,光标将进入小部件 (QDragEnterEvent) |
| QEvent::DragLeave | 在拖放操作期间,鼠标离开widget (QDragLeaveEvent) |
| QEvent::DragMove | 拖放操作正在进行中 (QDragMoveEvent) |
| QEvent::Drop | 拖放操作已完成 (QDropEvent) |
| QEvent::DynamicPropertyChange | 动态属性已从对象中添加、更改或删除 |
| QEvent::EnabledChange | Widget的启用状态已更改 |
| QEvent::Enter | 鼠标进入widget的边界 (QEnterEvent) |
| QEvent::EnterEditFocus | 编辑器widget获得编辑的焦点。必须定义QT_KEYPAD_NAVIGATION |
| QEvent::EnterWhatsThisMode | 当程序进入“What’s This?”模式时发送给顶层widget |
| QEvent::Expose | 当一个window的屏幕内容无效并需要从后台存储刷新时发送到该window |
| QEvent::FileOpen | 文件打开请求(QFileOpenEvent) |
| QEvent::FocusIn | widget或window获得键盘焦点(QFocusEvent) |
| QEvent::FocusOut | widget或window失去键盘焦点(QFocusEvent) |
| QEvent::FocusAboutToChange | widget或window焦点即将更改(QFocusEvent) |
| QEvent::FontChange | widget的字体已改变 |
| QEvent::Gesture | 已触发手势(QGestureEvent) |
| QEvent::GestureOverride | 已触发手势覆盖(QGestureEvent) |
| QEvent::GrabKeyboard | Item获得键盘抓取(仅限QGraphicsItem) |
| QEvent::GrabMouse | Item获得鼠标抓取(仅限QGraphicsItem) |
| QEvent::GraphicsSceneContextMenu | 在图形场景上的上下文弹出菜单(QGraphicsSceneContextMenuEvent) |
| QEvent::GraphicsSceneDragEnter | 光标在拖放操作期间进入图形场景(QGraphicsSceneDragDropEvent) |
| QEvent::GraphicsSceneDragLeave | 光标在拖放操作过程中留下图形场景(QGraphicsSceneDragDropEvent) |
| QEvent::GraphicsSceneDragMove | 一个拖放操作正在一个场景中进行(QGraphicsSceneDragDropEvent) |
| QEvent::GraphicsSceneDrop | 在一个场景上完成拖放操作(QGraphicsSceneDragDropEvent) |
| QEvent::GraphicsSceneHelp | 用户请求图形场景的帮助(QHelpEvent) |
| QEvent::GraphicsSceneHoverEnter | 鼠标光标在图形场景中进入悬停Item(QGraphicSceneHoverEvent) |
| QEvent::GraphicsSceneHoverLeave | 鼠标光标在图形场景中离开悬停Item(QGraphicSceneHoverEvent) |
| Event::GraphicsSceneHoverMove | 鼠标光标在图形场景中在一个悬停Item中移动(QGraphicsSceneHoverEvent) |
| QEvent::GraphicsSceneMouseDoubleClick | 鼠标在图形场景中双击(QGraphicsSceneMouseEvent) |
| QEvent::GraphicsSceneMouseMove | 在图形场景中移动鼠标(QGraphicsSceneMouseEvent) |
| QEvent::GraphicsSceneMousePress | 在图形场景中点击鼠标(QGraphicsSceneMouseEvent) |
| QEvent::GraphicsSceneMouseRelease | 在图形场景中释放鼠标(QGraphicsSceneMouseEvent) |
| QEvent::GraphicsSceneMove | widget被移动(QGraphicsSceneMoveEvent) |
| QEvent::GraphicsSceneResize | widget被调整大小(QGraphicsSceneResizeEvent) |
| QEvent::GraphicsSceneWheel | 鼠标滚轮在图形场景中滚动(QGraphicsSceneWheelEvent) |
| QEvent::Hide | widget被隐藏(QHideEvent) |
| QEvent::HideToParent | 一个子类widget被隐藏 |
| QEvent::HoverEnter | 鼠标光标进入一个悬停widget(QHoverEvent) |
| QEvent::HoverLeave | 鼠标光标离开一个悬停widget(QHoverEvent) |
| QEvent::HoverMove | 鼠标光标在一个悬停widget中移动(QHoverEvent) |
| QEvent::IconDrag | window的主图标已被拖走(QIconDragEvent) |
| QEvent::IconTextChange | widget的图标文本已更改(已弃用) |
| QEvent::InputMethod | 一种输入模式正在使用(QInputMethodEvent) |
| QEvent::InputMethodQuery | 输入模式查询事件(QInputMethodQueryEvent) |
| QEvent::KeyboardLayoutChange | 键盘布局已改变 |
| QEvent::KeyPress | 按键(QKeyEvent) |
| QEvent::KeyRelease | 释放按键(QKeyEvent) |
| QEvent::LanguageChange | 应用程序翻译已更改 |
| QEvent::LayoutDirectionChange | 布局方向已改变 |
| QEvent::LayoutRequest | widget布局需要重做 |
| QEvent::Leave | 鼠标离开widget的边界 |
| QEvent::LeaveEditFocus | 一个编辑器widget失去编辑焦点。需定义QT_KEYPAD_NAVIGATION |
| QEvent::LeaveWhatsThisMode | 当程序离开“What’s This?”模式s时发送给顶层widget |
| QEvent::LocaleChange | 系统区域设置已更改 |
| QEvent::NonClientAreaMouseButtonDblClick | 鼠标双击发生在客户端区域之外(QMouseEvent) |
| QEvent::NonClientAreaMouseButtonPress | 在客户端区域外按下鼠标按钮(QMouseEvent) |
| QEvent::NonClientAreaMouseButtonRelease | 在客户端区域外释放鼠标按钮(QMouseEvent) |
| QEvent::NonClientAreaMouseMove | 在客户端区域外移动鼠标(QMouseEvent) |
| QEvent::MacSizeChange | 用户改变widget尺寸(仅限macOS系统) |
| QEvent::MetaCall | 通过QMetaObject::invokeMethod()的异步方法调用 |
| QEvent::ModifiedChange | widget修改状态已更改 |
| QEvent::MouseButtonDblClick | 鼠标双击(QMouseEvent) |
| QEvent::MouseButtonPress | 鼠标点击(QMouseEvent) |
| QEvent::MouseButtonRelease | 鼠标释放(QMouseEvent) |
| QEvent::MouseMove | 鼠标移动(QMouseEvent) |
| QEvent::MouseTrackingChange | 鼠标跟踪状态已更改 |
| Event::Move | widget的位置已改变(QMoveEvent) |
| QEvent::NativeGesture | 系统检测到手势(QNativeGestureEvent) |
| QEvent::OrientationChange | 屏幕方向发生变化(QScreenOrientationChangeEvent) |
| QEvent::Paint | 需要屏幕更新 (QPaintEvent) |
| QEvent::PaletteChange | widget的调色板已更改 |
| QEvent::ParentAboutToChange | widget的父类即将更改 |
| QEvent::ParentChange | widget的父类已更改 |
| QEvent::PlatformPanel | 已请求一个平台专用面板 |
| QEvent::PlatformSurface | 已创建或即将销毁本机平台表面(QPlatformSurfaceEvent) |
| QEvent::Polish | widget已抛光 |
| QEvent::PolishRequest | widget应该被抛光 |
| QEvent::QueryWhatsThis | widget应该接受事件如果它有“What’s This?”帮助 |
| QEvent::ReadOnlyChange | widget的只读模式已改变 |
| QEvent::RequestSoftwareInputPanel | 一个widget想要打开一个软件输入面板(SIP) |
| QEvent::Resize | widget的尺寸已改变(QResizeEvent) |
| QEvent::ScrollPrepare | 对象需要填满其几何信息(QScrollPrepareEvent) |
| QEvent::Scroll | 对象需要滚动到提供的位置(QScrollEvent) |
| QEvent::Shortcut | 在子类中为快捷键处理设计的按键(QShortEvent) |
| QEvent::ShortcutOverride | 在子类中用于覆盖快捷键处理的按键(QKeyEvent)。当一个快捷方式将触发时该事件会发送到当前活跃的窗口这允许客户端(如widgets)通过接收事件来表明他们将处理快捷方式。如果快捷方式覆盖被允许,该事件会作为普通按键事件发送到拥有焦点的widget。否则他将触发快捷操作(如果存在) |
| QEvent::Show | widget显示在屏幕上(QShowEvent) |
| QEvent::ShowToParent | 显示了一个子类widget |
| QEvent::SockAct | 套接字已激活,用于实现QSocketNotifier |
| QEvent::StateMachineSignal | 传送到状态机的信号(QStateMachine::SignalEvent) |
| QEvent::StateMachineWrapped | 事件是另一个事件的包装器,即包含另一个事件(QStateMachine::WrappedEvent) |
| QEvent::StatusTip | 请求状态提示 (QStatusTipEvent) |
| QEvent::StyleChange | widget的样式已更改 |
| QEvent::TabletMove | Wacom tablet move (QTabletEvent) |
| QEvent::TabletPress | Wacom tablet press (QTabletEvent) |
| QEvent::TabletRelease | Wacom tablet release (QTabletEvent) |
| QEvent::TabletEnterProximity | Wacom tablet 进入接近事件 (QTabletEvent),发送给 QApplication |
| QEvent::TabletLeaveProximity | Wacom tablet 进离开接近事件 (QTabletEvent), 发送给QApplication |
| QEvent::TabletTrackingChange | The Wacom tablet 追踪状态已改变 |
| QEvent::ThreadChange | 对象被移动到另一个线程。这是上一个线程中发送到此对象的最后一个事件。请参见QObject::moveToThread() |
| QEvent::Timer | 定时事件(QTimerEvent) |
| QEvent::ToolBarChange | 在macOS上工具栏按钮被切换 |
| QEvent::ToolTip | 已请求工具提示 (QHelpEvent) |
| QEvent::ToolTipChange | widget的工具提示已改变 |
| QEvent::TouchBegin | 触摸屏或轨迹板事件序列的开始(QTouchEvent) |
| QEvent::TouchCancel | 取消触摸事件序列(QTouchEvent) |
| QEvent::TouchEnd | 触摸事件序列的末尾(QTouchEvent) |
| QEvent::TouchUpdate | 触摸屏事件(QTouchEvent) |
| QEvent::UngrabKeyboard | Item丢失键盘抓取(仅限QGraphicsItem) |
| QEvent::UngrabMouse | Item失去鼠标抓取(QGraphicsItem, QQuickItem) |
| QEvent::UpdateLater | widget应该排队等待以后重新绘制 |
| QEvent::UpdateRequest | widget应该被重新绘制 |
| QEvent::WhatsThis | widget应该显示"What’s This?"帮助(QHelpEvent) |
| QEvent::WhatsThisClicked | widget的"What’s This?"帮助中的一条连接已被点击 |
| QEvent::Wheel | 鼠标滚轮滚动(QWheelEvent) |
| QEvent::WinEventAct | 发生了特定于Windows的激活事件 |
| QEvent::WindowActivate | window已激活 |
| QEvent::WindowBlocked | 窗口被模态对话框阻止 |
| QEvent::WindowDeactivate | window已停用 |
| QEvent::WindowIconChange | window的图标已改变 |
| QEvent::WindowStateChange | window的状态(最小化、最大化或全屏)已更改(QWindowStateChangeEvent) |
| QEvent::WindowTitleChange | window标题已更改 |
| QEvent::WindowUnblocked | 退出模态对话框后,window将取消阻止 |
| QEvent::WinIdChange | 此本机widget的窗口系统标识符已更改 |
| QEvent::ZOrderChange | widget的z顺序已更改。此事件从不发送到顶级windows |




