QEvent 类

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

头: #include <QEvent>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
继承者: QActionEvent , QChildEvent , QCloseEvent , QDragLeaveEvent , QDropEvent , QDynamicPropertyChangeEvent , QExposeEvent , QFileOpenEvent , QFocusEvent , QGestureEvent , QGraphicsSceneEvent , QHelpEvent , QHideEvent , QIconDragEvent , QInputEvent , QInputMethodEvent , QInputMethodQueryEvent , QMoveEvent , QPaintEvent , QPlatformSurfaceEvent , QResizeEvent , QScrollEvent , QScrollPrepareEvent , QShortcutEvent , QShowEvent , QStateMachine::SignalEvent , QStateMachine::WrappedEvent , QStatusTipEvent , QTimerEvent , QWhatsThisClickedEvent ,和 QWindowStateChangeEvent

公共类型

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

一般而言,事件来自底层窗口系统 ( 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 光标进入图形场景在拖放操作期间 ( QGraphicsSceneDragDropEvent ).
QEvent::GraphicsSceneDragLeave 166 光标离开图形场景在拖放操作期间 ( QGraphicsSceneDragDropEvent ).
QEvent::GraphicsSceneDragMove 165 拖放操作正在场景上进行 ( QGraphicsSceneDragDropEvent ).
QEvent::GraphicsSceneDrop 167 拖放操作在场景上完成 ( QGraphicsSceneDragDropEvent ).
QEvent::GraphicsSceneHelp 163 用户请求用于图形场景的帮助 ( QHelpEvent ).
QEvent::GraphicsSceneHoverEnter 160 鼠标光标进入图形场景中的悬停项 ( QGraphicsSceneHoverEvent ).
QEvent::GraphicsSceneHoverLeave 162 鼠标光标离开图形场景中的悬停项 ( QGraphicsSceneHoverEvent ).
QEvent::GraphicsSceneHoverMove 161 鼠标光标在图形场景中的悬停项内移动 ( QGraphicsSceneHoverEvent ).
QEvent::GraphicsSceneMouseDoubleClick 158 再次按下鼠标 (双击) 在图形场景中 ( 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 窗口的主图标已被拖走 ( QIconDragEvent ).
QEvent::IconTextChange 101 Widget 的图标文本已改变。(弃用)
QEvent::InputMethod 83 正在使用输入法 ( 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 编辑器 Widget 丢失编辑焦点。必须定义 QT_KEYPAD_NAVIGATION。
QEvent::LeaveWhatsThisMode 125 发送给顶层 Widget,当应用程序离开 What's This? 模式时。
QEvent::LocaleChange 88 系统区域设置已改变。
QEvent::NonClientAreaMouseButtonDblClick 176 客户端区域外发生鼠标双击 ( QMouseEvent ).
QEvent::NonClientAreaMouseButtonPress 174 客户端区域外发生鼠标按钮按下 ( QMouseEvent ).
QEvent::NonClientAreaMouseButtonRelease 175 客户端区域外发生鼠标按钮释放 ( QMouseEvent ).
QEvent::NonClientAreaMouseMove 173 客户端区域外发生鼠标移动 ( QMouseEvent ).
QEvent::MacSizeChange 177 用户改变其 Widget 大小 (仅 macOS)。
QEvent::MetaCall 43 异步方法的援引凭借 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::Polish 75 Widget 被抛光。
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::StateMachineSignal 192 交付给状态机的信号 ( QStateMachine::SignalEvent ).
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::TabletEnterProximity 171 Wacom 数位板进入接近事件 ( QTabletEvent ),发送给 QApplication .
QEvent::TabletLeaveProximity 172 Wacom 数位板离开接近事件 ( QTabletEvent ),发送给 QApplication .
QEvent::TabletTrackingChange 219 Wacom 数位板追踪状态已改变 (从 Qt 5.9 起)。
QEvent::ThreadChange 22 对象被移到另一线程。这是前一线程发送给此对象的最后事件。见 QObject::moveToThread ().
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 隐式 接受 所有 points 事件携带。

访问函数:

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

成员函数文档编制

QEvent:: QEvent ( QEvent::Type type )

构造事件对象为类型 type .

[虚拟] 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

返回事件类型。