QEvent 类

QEvent 类是所有事件类的基类。事件对象包含事件参数。 更多...

公共类型

enum Type { None, ActionAdded, ActionChanged, ActionRemoved, ActivationChange, …, MaxUser }

特性

公共函数

QEvent (QEvent::Type type )
virtual ~QEvent ()
void accept ()
virtual QEvent * clone () const
void ignore ()
bool isAccepted () const
bool isInputEvent () const
bool isPointerEvent () const
bool isSinglePointEvent () const
virtual void setAccepted (bool accepted )
bool spontaneous () const
QEvent::Type type () const

静态公共成员

int registerEventType (int hint = -1)

详细描述

Qt 的主事件循环 ( QCoreApplication::exec ()) 从事件队列抓取本机窗口系统事件,将它们转换成 QEvent,并将翻译事件发送给 QObject s.

通常,事件来自底层窗口系统 ( spontaneous () 返回 true ),但也可能手动发送事件使用 QCoreApplication::sendEvent () 和 QCoreApplication::postEvent () ( spontaneous () 返回 false ).

QObjects 接收事件通过让其 QObject::event () 函数被调用。函数可以在子类中被重实现,以定制事件处理并添加额外事件类型; QWidget::event () 是显著范例。默认情况下,事件被分派给事件处理程序像 QObject::timerEvent () 和 QWidget::mouseMoveEvent (). QObject::installEventFilter () 允许对象拦截另一对象的预定事件。

基本 QEvent 仅包含事件类型参数和 Accept 标志。接受标志设置采用 accept (),而清零采用 ignore ()。它是默认设置,但不依赖于此,因为子类可能在其构造函数中选择清零它。

QEvent 子类包含特定事件的额外描述参数。

另请参阅 QObject::event (), QObject::installEventFilter (), QCoreApplication::sendEvent (), QCoreApplication::postEvent (),和 QCoreApplication::processEvents ().

成员类型文档编制

enum QEvent:: Type

此枚举类型定义 Qt 中的有效事件类型。事件类型和用于每个类型的专用类如下:

常量 描述
QEvent::None 0 不是事件。
QEvent::ActionAdded 114 新的动作已被添加 ( QActionEvent ).
QEvent::ActionChanged 113 动作已被改变 ( QActionEvent ).
QEvent::ActionRemoved 115 动作已被移除 ( 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 Widget 子级被抛光 ( QChildEvent ).
QEvent::ChildRemoved 71 对象失去子级 ( QChildEvent ).
QEvent::Clipboard 40 剪贴板内容已改变。
QEvent::Close 19 Widget 被关闭 ( QCloseEvent ).
QEvent::CloseSoftwareInputPanel 200 Widget 想要关闭 SIP (软件输入面板)。
QEvent::ContentsRectChange 178 Widget 的内容矩形改变边距。
QEvent::ContextMenu 82 上下文弹出菜单 ( QContextMenuEvent ).
QEvent::CursorChange 183 Widget 的光标已改变。
QEvent::DeferredDelete 52 对象将被删除,在它已被清理之后 ( QDeferredDeleteEvent )
QEvent::DragEnter 60 光标进入 Widget 在拖放操作期间 ( QDragEnterEvent ).
QEvent::DragLeave 62 光标离开 Widget 在拖放操作期间 ( QDragLeaveEvent ).
QEvent::DragMove 61 拖放操作正在进行中 ( QDragMoveEvent ).
QEvent::Drop 63 拖放操作完成 ( QDropEvent ).
QEvent::DynamicPropertyChange 170 添加、更改或从对象移除动态特性。
QEvent::EnabledChange 98 Widget 的被启用状态已改变。
QEvent::Enter 10 鼠标进入 Widget 边界 ( QEnterEvent ).
QEvent::EnterEditFocus 150 编辑器 Widget 获得编辑聚焦。 QT_KEYPAD_NAVIGATION 必须有定义。
QEvent::EnterWhatsThisMode 124 发送给顶层 Widget,当应用程序进入 What's This? 模式时。
QEvent::Expose 206 发送给窗口,当其屏幕内容无效且需要从后备存储刷新时。
QEvent::FileOpen 116 文件打开请求 ( QFileOpenEvent ).
QEvent::FocusIn 8 Widget 或窗口获得键盘聚焦 ( QFocusEvent ).
QEvent::FocusOut 9 Widget 或窗口丢失键盘聚焦 ( QFocusEvent ).
QEvent::FocusAboutToChange 23 Widget 或窗口聚焦即将改变 ( QFocusEvent )
QEvent::FontChange 97 Widget 字体已改变。
QEvent::Gesture 198 手势被触发 ( QGestureEvent ).
QEvent::GestureOverride 202 手势覆盖被触发 ( QGestureEvent ).
QEvent::GrabKeyboard 188 项获得键盘抓取 ( QGraphicsItem 仅)。
QEvent::GrabMouse 186 项获得鼠标抓取 ( QGraphicsItem 仅)。
QEvent::GraphicsSceneContextMenu 159 图形场景之上的上下文弹出菜单 ( QGraphicsSceneContextMenuEvent ).
QEvent::GraphicsSceneDragEnter 164 The cursor enters a graphics scene during a drag and drop operation ( QGraphicsSceneDragDropEvent ).
QEvent::GraphicsSceneDragLeave 166 The cursor leaves a graphics scene during a drag and drop operation ( QGraphicsSceneDragDropEvent ).
QEvent::GraphicsSceneDragMove 165 A drag and drop operation is in progress over a scene ( QGraphicsSceneDragDropEvent ).
QEvent::GraphicsSceneDrop 167 A drag and drop operation is completed over a scene ( QGraphicsSceneDragDropEvent ).
QEvent::GraphicsSceneHelp 163 用户请求用于图形场景的帮助 ( QHelpEvent ).
QEvent::GraphicsSceneHoverEnter 160 The mouse cursor enters a hover item in a graphics scene ( QGraphicsSceneHoverEvent ).
QEvent::GraphicsSceneHoverLeave 162 The mouse cursor leaves a hover item in a graphics scene ( QGraphicsSceneHoverEvent ).
QEvent::GraphicsSceneHoverMove 161 The mouse cursor moves inside a hover item in a graphics scene ( QGraphicsSceneHoverEvent ).
QEvent::GraphicsSceneMouseDoubleClick 158 Mouse press again (double click) in a graphics scene ( QGraphicsSceneMouseEvent ).
QEvent::GraphicsSceneMouseMove 155 在图形场景中移动鼠标 ( QGraphicsSceneMouseEvent ).
QEvent::GraphicsSceneMousePress 156 在图形场景中按下鼠标 ( QGraphicsSceneMouseEvent ).
QEvent::GraphicsSceneMouseRelease 157 在图形场景中释放鼠标 ( QGraphicsSceneMouseEvent ).
QEvent::GraphicsSceneMove 182 Widget 被移除 ( QGraphicsSceneMoveEvent ).
QEvent::GraphicsSceneResize 181 Widget 被重置尺寸 ( QGraphicsSceneResizeEvent ).
QEvent::GraphicsSceneWheel 168 鼠标滚轮在图形场景中卷动 ( QGraphicsSceneWheelEvent ).
QEvent::GraphicsSceneLeave 220 光标离开图形场景 ( QGraphicsSceneWheelEvent ).
QEvent::Hide 18 Widget 被隐藏 ( QHideEvent ).
QEvent::HideToParent 27 子级 Widget 已隐藏。
QEvent::HoverEnter 127 鼠标光标进入悬停 Widget ( QHoverEvent ).
QEvent::HoverLeave 128 鼠标光标离开悬停 Widget ( QHoverEvent ).
QEvent::HoverMove 129 鼠标光标在悬停 Widget 内移动 ( QHoverEvent ).
QEvent::IconDrag 96 The main icon of a window has been dragged away ( QIconDragEvent ).
QEvent::IconTextChange 101 Widget's icon text has been changed. (Deprecated)
QEvent::InputMethod 83 An input method is being used ( QInputMethodEvent ).
QEvent::InputMethodQuery 207 输入法查询事件 ( QInputMethodQueryEvent )
QEvent::KeyboardLayoutChange 169 键盘布局已改变。
QEvent::KeyPress 6 键按下 ( QKeyEvent ).
QEvent::KeyRelease 7 键释放 ( QKeyEvent ).
QEvent::LanguageChange 89 应用程序翻译已改变。
QEvent::LayoutDirectionChange 90 布局的方向已改变。
QEvent::LayoutRequest 76 Widget 布局需要重做。
QEvent::Leave 11 鼠标离开 Widget 边界。
QEvent::LeaveEditFocus 151 An editor widget loses focus for editing. QT_KEYPAD_NAVIGATION must be defined.
QEvent::LeaveWhatsThisMode 125 Send to toplevel widgets when the application leaves "What's This?" mode.
QEvent::LocaleChange 88 系统区域设置已改变。
QEvent::NonClientAreaMouseButtonDblClick 176 A mouse double click occurred outside the client area ( QMouseEvent ).
QEvent::NonClientAreaMouseButtonPress 174 A mouse button press occurred outside the client area ( QMouseEvent ).
QEvent::NonClientAreaMouseButtonRelease 175 A mouse button release occurred outside the client area ( QMouseEvent ).
QEvent::NonClientAreaMouseMove 173 A mouse move occurred outside the client area ( QMouseEvent ).
QEvent::MacSizeChange 177 The user changed his widget sizes (macOS only).
QEvent::MetaCall 43 An asynchronous method invocation via QMetaObject::invokeMethod ().
QEvent::ModifiedChange 102 Widget 修改状态已改变。
QEvent::MouseButtonDblClick 4 再次按下鼠标 ( QMouseEvent ).
QEvent::MouseButtonPress 2 鼠标按下 ( QMouseEvent ).
QEvent::MouseButtonRelease 3 鼠标释放 ( QMouseEvent ).
QEvent::MouseMove 5 鼠标移动 ( QMouseEvent ).
QEvent::MouseTrackingChange 109 鼠标跟踪状态已改变。
QEvent::Move 13 Widget 位置改变 ( QMoveEvent ).
QEvent::NativeGesture 197 系统检测到手势 ( QNativeGestureEvent ).
QEvent::OrientationChange 208 屏幕方向已改变 ( QScreenOrientationChangeEvent ).
QEvent::Paint 12 必要的屏幕更新 ( QPaintEvent ).
QEvent::PaletteChange 39 Widget 调色板改变。
QEvent::ParentAboutToChange 131 Widget 父级即将改变。
QEvent::ParentChange 21 Widget 父级已改变。
QEvent::PlatformPanel 212 已请求特定平台面板。
QEvent::PlatformSurface 217 本机平台表面已被创建或即将被销毁 ( QPlatformSurfaceEvent ).
QEvent::PolishRequest 74 Widget 应该被抛光。
QEvent::QueryWhatsThis 123 Widget 应该接受事件若它拥有 What's This? 帮助 ( QHelpEvent ).
QEvent::ReadOnlyChange 106 Widget 只读状态已改变 (从 Qt 5.4 起)。
QEvent::RequestSoftwareInputPanel 199 Widget 想要打开 SIP (软件输入面板)。
QEvent::Resize 14 Widget 大小改变 ( QResizeEvent ).
QEvent::ScrollPrepare 204 对象需要填充几何信息 ( QScrollPrepareEvent ).
QEvent::Scroll 205 对象需要卷动到供给位置 ( QScrollEvent ).
QEvent::Shortcut 117 处理快捷键子级按键 ( QShortcutEvent ).
QEvent::ShortcutOverride 51 在子级中按下键,为覆盖快捷键处理 ( QKeyEvent )。当快捷键即将被触发时, ShortcutOverride 被发送给活动窗口。这允许客户端 (如 Widget) 通过接受事件,以信号它们自己将处理快捷键。若快捷键覆盖被接受,事件作为常规键按下被交付给聚焦 Widget。否则,它触发快捷键动作,若存在的话。
QEvent::Show 17 Widget 被展示在屏幕上 ( QShowEvent ).
QEvent::ShowToParent 26 子级 Widget 已被展示。
QEvent::SockAct 50 套接字被激活,用于实现 QSocketNotifier .
QEvent::StateMachineWrapped 193 事件是包裹器,即:包含另一事件 ( QStateMachine::WrappedEvent ).
QEvent::StatusTip 112 请求状态提示 ( QStatusTipEvent ).
QEvent::StyleChange 100 Widget 的样式已改变。
QEvent::TabletMove 87 Wacom 数位板移动 ( QTabletEvent ).
QEvent::TabletPress 92 Wacom 数位板按下 ( QTabletEvent ).
QEvent::TabletRelease 93 Wacom 数位板释放 ( QTabletEvent ).
QEvent::TabletLeaveProximity 172 Wacom 数位板离开接近事件 ( QTabletEvent ),发送给 QApplication .
QEvent::TabletTrackingChange 219 Wacom 数位板跟踪状态已改变 (从 Qt 5.9 起)。
QEvent::Timer 1 常规计时器事件 ( QTimerEvent ).
QEvent::ToolBarChange 120 在 macOS 切换工具栏按钮。
QEvent::ToolTip 110 请求工具提示 ( QHelpEvent ).
QEvent::ToolTipChange 184 Widget 工具提示已改变。
QEvent::TouchBegin 194 一系列触摸屏或跟踪板事件的开始 ( QTouchEvent ).
QEvent::TouchCancel 209 取消触摸事件序列 ( QTouchEvent ).
QEvent::TouchEnd 196 触摸事件序列结束 ( QTouchEvent ).
QEvent::TouchUpdate 195 触摸屏事件 ( QTouchEvent ).
QEvent::UngrabKeyboard 189 项丢失键盘抓取 ( QGraphicsItem 仅)。
QEvent::UngrabMouse 187 项丢失鼠标抓取 ( QGraphicsItem , QQuickItem ).
QEvent::UpdateLater 78 Widget 应被队列以在稍后重新描绘。
QEvent::UpdateRequest 77 Widget 应被重新描绘。
QEvent::WhatsThis 111 小部件应展现 What's This? 帮助 ( QHelpEvent ).
QEvent::WhatsThisClicked 118 小部件 What's This? 帮助中的链接被点击。
QEvent::Wheel 31 鼠标滚轮卷动 ( QWheelEvent ).
QEvent::WinEventAct 132 发生特定窗口激活事件。
QEvent::WindowActivate 24 窗口被激活。
QEvent::WindowBlocked 103 窗口被模态对话框阻塞。
QEvent::WindowDeactivate 25 窗口被取消激活。
QEvent::WindowIconChange 34 窗口的图标已改变。
QEvent::WindowStateChange 105 窗口状态 (最小化、最大化或全屏) 已改变 ( QWindowStateChangeEvent ).
QEvent::WindowTitleChange 33 窗口标题已改变。
QEvent::WindowUnblocked 104 窗口被解除阻塞在退出模态对话框后。
QEvent::WinIdChange 203 此本机 Widget 窗口系统标识符已改变。
QEvent::ZOrderChange 126 小部件 Z 次序已改变。此事件从不发送给顶层窗口。

用户事件应具有的值,介于 User and MaxUser :

常量 描述
QEvent::User 1000 用户定义事件。
QEvent::MaxUser 65535 上次用户事件 ID。

为方便起见,可以使用 registerEventType () 函数为应用程序注册并预留自定义事件类型。这样做允许避免意外重用已在应用程序其它地方使用的自定义事件类型。

特性文档编制

accepted : bool

此特性保持事件对象的接受标志。

设置接受参数指示事件接收器想要事件。不想要事件可能被传播给父级 Widget。默认情况下,isAccepted() 被设为 true,但不依赖此,因为子类可能选择在其构造函数中清零它。

为方便起见,接受标志还可以被设置采用 accept (),而清零采用 ignore ().

注意: 接受 QPointerEvent 隐式 accepts 所有 points 事件携带。

访问函数:

bool isAccepted () const
virtual void setAccepted (bool accepted )

成员函数文档编制

QEvent:: QEvent ( QEvent::Type type )

构造事件对象为类型 type .

[virtual] QEvent:: ~QEvent ()

销毁事件。若它被 posted ,它将被移除 (从要被张贴的事件列表)。

void QEvent:: accept ()

设置事件对象的接受标志,相当于调用 setAccepted (true)。

设置接受参数指示事件接收器想要事件。不想要事件可能被传播给父级 Widget。

另请参阅 ignore ().

[virtual, since 6.0] QEvent *QEvent:: clone () const

创建并返回此事件的恒等副本。

该函数在 Qt 6.0 引入。

void QEvent:: ignore ()

清零事件对象的接受标志参数,相当于调用 setAccepted (false).

清零接受参数指示事件接收器不想要事件。不想要事件被传播给父级 Widget。

另请参阅 accept ().

[since 6.0] bool QEvent:: isInputEvent () const

返回 true 若事件对象是 QInputEvent 或其子类之一。

该函数在 Qt 6.0 引入。

[since 6.0] bool QEvent:: isPointerEvent () const

返回 true 若事件对象是 QPointerEvent 或其子类之一。

该函数在 Qt 6.0 引入。

[since 6.0] bool QEvent:: isSinglePointEvent () const

返回 true 若事件对象是子类化的 QSinglePointEvent .

该函数在 Qt 6.0 引入。

[static] int QEvent:: registerEventType ( int hint = -1)

注册并返回自定义事件类型。 hint 提供将被使用若可用,否则返回值介于 QEvent::User and QEvent::MaxUser 尚未被注册。 hint 被忽略若其值不介于 QEvent::User and QEvent::MaxUser .

返回 -1 若已获取所有可用值或程序正关闭。

注意: 此函数是 thread-safe .

bool QEvent:: spontaneous () const

返回 true 若事件发源于应用程序外 (系统事件);否则返回 false .

QEvent::Type QEvent:: type () const

返回事件类型。