QEvent 类

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

头: #include <QEvent>
继承者: QAccessibleEvent , QActionEvent , QChildEvent , QCloseEvent , QCustomEvent , QDragLeaveEvent , QDropEvent , QDynamicPropertyChangeEvent , QFileOpenEvent , QFocusEvent , QGestureEvent , QGraphicsSceneEvent , QHelpEvent , QHideEvent , QHoverEvent , QIconDragEvent , QInputEvent , QInputMethodEvent , QMoveEvent , QPaintEvent , QResizeEvent , QShortcutEvent , QShowEvent , QStateMachine::SignalEvent , QStateMachine::WrappedEvent , QStatusTipEvent , QTimerEvent , QWhatsThisClickedEvent ,和 QWindowStateChangeEvent

公共类型

enum Type { None, AccessibilityDescription, AccessibilityHelp, AccessibilityPrepare, ..., MaxUser }

特性

公共函数

QEvent (Type type )
virtual ~QEvent ()
void accept ()
void ignore ()
bool isAccepted () const
void setAccepted (bool accepted )
bool spontaneous () const
类型 type () const

静态公共成员

int registerEventType (int hint = -1)

详细描述

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

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

一般而言,事件来自底层窗口系统 ( spontaneous () returns true), but it is also possible to manually send events using QCoreApplication::sendEvent () 和 QCoreApplication::postEvent () ( spontaneous () returns false).

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

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

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

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

成员类型文档编制

enum QEvent:: Type

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

常量 描述
QEvent::None 0 不是事件。
QEvent::AccessibilityDescription 130 Used to query accessibility description texts ( QAccessibleEvent ).
QEvent::AccessibilityHelp 119 Used to query accessibility help texts ( QAccessibleEvent ).
QEvent::AccessibilityPrepare 86 Accessibility information is requested.
QEvent::ActionAdded 114 新的动作已被添加 ( QActionEvent ).
QEvent::ActionChanged 113 动作已被改变 ( QActionEvent ).
QEvent::ActionRemoved 115 动作已被移除 ( QActionEvent ).
QEvent::ActivationChange 99 Widget 的顶层窗口激活状态已更改。
QEvent::ApplicationActivate 121 The application has been made available to the user.
QEvent::ApplicationActivated ApplicationActivate This enum has been deprecated. Use ApplicationActivate instead.
QEvent::ApplicationDeactivate 122 The application has been suspended, and is unavailable to the user.
QEvent::ApplicationFontChange 36 默认应用程序字体已改变。
QEvent::ApplicationLayoutDirectionChange 37 默认的应用程序布局方向已改变。
QEvent::ApplicationPaletteChange 38 默认的应用程序调色板已改变。
QEvent::ApplicationWindowIconChange 35 应用程序的图标已改变。
QEvent::ChildAdded 68 对象获得子级 ( QChildEvent ).
QEvent::ChildInserted 70 对象获得子级 ( QChildEvent ). Qt3Support only, use ChildAdded instead.
QEvent::ChildPolished 69 Widget 子级被抛光 ( QChildEvent ).
QEvent::ChildRemoved 71 对象失去子级 ( QChildEvent ).
QEvent::Clipboard 40 The clipboard contents have changed (QClipboardEvent).
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 The object will be deleted after it has cleaned up.
QEvent::DragEnter 60 光标进入 Widget 在拖放操作期间 ( QDragEnterEvent ).
QEvent::DragLeave 62 光标离开 Widget 在拖放操作期间 ( QDragLeaveEvent ).
QEvent::DragMove 61 拖放操作正在进行中 ( QDragMoveEvent ).
QEvent::Drop 63 拖放操作完成 ( QDropEvent ).
QEvent::EnabledChange 98 Widget 的启用状态已改变。
QEvent::Enter 10 Mouse enters widget's boundaries.
QEvent::EnterEditFocus 150 编辑器 Widget 获得编辑聚焦。
QEvent::EnterWhatsThisMode 124 发送给顶层 Widget,当应用程序进入 What's This? 模式时。
QEvent::FileOpen 116 文件打开请求 ( QFileOpenEvent ).
QEvent::FocusIn 8 Widget gains keyboard focus ( QFocusEvent ).
QEvent::FocusOut 9 Widget loses keyboard focus ( QFocusEvent ).
QEvent::FontChange 97 Widget 字体已改变。
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::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's icon text has been changed.
QEvent::InputMethod 83 正在使用输入法 ( QInputMethodEvent ).
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.
QEvent::LeaveWhatsThisMode 125 发送给顶层 Widget,当应用程序离开 What's This? 模式时。
QEvent::LocaleChange 88 系统区域设置已改变。
QEvent::NonClientAreaMouseButtonDblClick 176 A mouse double click occurred outside the client area.
QEvent::NonClientAreaMouseButtonPress 174 A mouse button press occurred outside the client area.
QEvent::NonClientAreaMouseButtonRelease 175 A mouse button release occurred outside the client area.
QEvent::NonClientAreaMouseMove 173 A mouse move occurred outside the client area.
QEvent::MacSizeChange 177 The user changed his widget sizes (Mac OS X only).
QEvent::MenubarUpdated 153 The window's menu bar has been updated.
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::Paint 12 必要的屏幕更新 ( QPaintEvent ).
QEvent::PaletteChange 39 Widget 调色板改变。
QEvent::ParentAboutToChange 131 Widget 父级即将改变。
QEvent::ParentChange 21 Widget 父级已改变。
QEvent::PlatformPanel 212 已请求特定平台面板。
QEvent::Polish 75 Widget 被抛光。
QEvent::PolishRequest 74 Widget 应该被抛光。
QEvent::QueryWhatsThis 123 Widget 应该接受事件,若它拥有 What's This? 帮助。
QEvent::RequestSoftwareInputPanel 199 Widget 想要打开 SIP (软件输入面板)。
QEvent::Resize 14 Widget 大小改变 ( QResizeEvent ).
QEvent::Shortcut 117 处理快捷键子级按键 ( QShortcutEvent ).
QEvent::ShortcutOverride 51 在子级中按下键,为覆写快捷键处理 ( QKeyEvent ).
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::OkRequest 94 Ok button in decoration pressed. Supported only for Windows CE.
QEvent::TabletEnterProximity 171 Wacom 数位板进入接近事件 ( QTabletEvent ),发送给 QApplication .
QEvent::TabletLeaveProximity 172 Wacom 数位板离开接近事件 ( QTabletEvent ),发送给 QApplication .
QEvent::Timer 1 常规计时器事件 ( QTimerEvent ).
QEvent::ToolBarChange 120 The toolbar button is toggled on Mac OS X.
QEvent::ToolTip 110 请求工具提示 ( QHelpEvent ).
QEvent::ToolTipChange 184 Widget 工具提示已改变。
QEvent::UngrabKeyboard 189 项丢失键盘抓取 ( QGraphicsItem 仅)。
QEvent::UngrabMouse 187 项丢失鼠标抓取 ( QGraphicsItem 仅)。
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 The 窗口状态 (最小化、最大化或全屏) 已改变 ( QWindowStateChangeEvent ).
QEvent::WindowTitleChange 33 窗口标题已改变。
QEvent::WindowUnblocked 104 窗口被解除阻塞在退出模态对话框后。
QEvent::ZOrderChange 126 小部件的 Z 次序已改变。从不将此事件发送给顶层窗口。
QEvent::KeyboardLayoutChange 169 键盘布局已改变。
QEvent::DynamicPropertyChange 170 A dynamic property was added, changed or removed from the object.
QEvent::TouchBegin 194 Beginning of a sequence of touch-screen and/or track-pad events ( QTouchEvent )
QEvent::TouchUpdate 195 触摸屏事件 ( QTouchEvent )
QEvent::TouchEnd 196 触摸事件序列结束 ( QTouchEvent )
QEvent::WinIdChange 203 The window system identifer for this native widget has changed
QEvent::Gesture 198 手势被触发 ( QGestureEvent )
QEvent::GestureOverride 202 手势覆写被触发 ( QGestureEvent )

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

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

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

特性文档编制

accepted : bool

事件对象的接受标志

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

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

访问函数:

bool isAccepted () const
void setAccepted (bool accepted )

成员函数文档编制

QEvent:: QEvent ( Type type )

构造事件对象为类型 type .

[虚拟] QEvent:: ~QEvent ()

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

void QEvent:: accept ()

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

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

另请参阅 ignore ().

void QEvent:: ignore ()

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

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

另请参阅 accept ().

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

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

注意: 此函数是 thread-safe .

该函数在 Qt 4.4 引入。

bool QEvent:: spontaneous () const

Returns true if the event originated outside the application (a system event); otherwise returns false.

此函数的返回值未定义,对于描绘事件。

Type QEvent:: type () const

返回事件类型。