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 若已獲取所有可用值或程序正關閉。
注意: 此函數是 綫程安全 .
該函數在 Qt 4.4 引入。
返迴
true
若事件發源於應用程序外 (係統事件);否則返迴
false
.
此函數的返迴值未定義,對於描繪事件。
返迴事件類型。