QEvent 类是所有事件类的基类。事件对象包含事件参数。 更多...
头: | #include <QEvent> |
qmake: | QT += core |
继承者: |
32 类型QActionEvent , QChildEvent , QCloseEvent , QDragLeaveEvent , QDropEvent , QDynamicPropertyChangeEvent , QEnterEvent , 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 () |
void | ignore () |
bool | isAccepted () const |
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 ().
此枚举类型定义 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::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
|
The 窗口状态 (最小化、最大化或全屏) 已改变 ( 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 () 函数为应用程序注册并预留自定义事件类型。这样做允许避免意外重用已在应用程序其它地方使用的自定义事件类型。
事件对象的接受标志
设置接受参数指示事件接收器想要事件。不想要事件可能被传播给父级 Widget。默认情况下,isAccepted() 被设为 true,但不依赖此,因为子类可能选择在其构造函数中清零它。
为方便起见,还可以设置接受标志采用 accept (),而清零采用 ignore ().
访问函数:
bool | isAccepted () const |
void | setAccepted (bool accepted ) |
构造事件对象为类型 type .
[虚拟]
QEvent::
~QEvent
()
销毁事件。若它被 posted ,它将被移除 (从要被张贴的事件列表)。
设置事件对象的接受标志,相当于调用 setAccepted (true)。
设置接受参数指示事件接收器想要事件。不想要事件可能被传播给父级 Widget。
另请参阅 ignore ().
清零事件对象的接受标志参数,相当于调用 setAccepted (false).
清零接受参数指示事件接收器不想要事件。不想要事件被传播给父级 Widget。
另请参阅 accept ().
[static]
int
QEvent::
registerEventType
(
int
hint
= -1)
注册并返回自定义事件类型。 hint 提供将被使用若可用,否则返回值介于 QEvent::User and QEvent::MaxUser 尚未被注册。 hint 被忽略若其值不介于 QEvent::User and QEvent::MaxUser .
返回 -1 若已获取所有可用值或程序正关闭。
注意: 此函数是 thread-safe .
该函数在 Qt 4.4 引入。
返回
true
若事件发源于应用程序外 (系统事件);否则返回
false
.
此函数的返回值未定义,对于描绘事件。
返回事件类型。