QEvent 類

QEvent 類是所有事件類的基類。事件對象包含事件參數。 更多...

頭: #include <QEvent>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
繼承者:
32 類型

QActionEvent , QChildEvent , QChildWindowEvent , 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 ()
(從 6.0 起) virtual QEvent * clone () const
void ignore ()
bool isAccepted () const
(從 6.0 起) bool isInputEvent () const
(從 6.0 起) bool isPointerEvent () const
(從 6.0 起) 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::ChildWindowAdded (since Qt 6.7) 223 將子級窗口添加到窗口。
QEvent::ChildWindowRemoved (since Qt 6.7) 224 從窗口移除子級窗口。
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::DevicePixelRatioChange (since Qt 6.6) 222 用於此 Widget (或窗口) 的底層後備存儲 devicePixelRatio 已改變。
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 對象父級即將改變。隻發送給某些對象類型,譬如 QWidget .
QEvent::ParentChange 21 對象父級已改變。隻發送給某些對象類型,譬如 QWidget .
QEvent::ParentWindowAboutToChange (since Qt 6.7) 225 父級窗口即將改變。
QEvent::ParentWindowChange (since Qt 6.7) 226 父級窗口已改變。
QEvent::PlatformPanel 212 已請求特定平颱麵闆。
QEvent::PlatformSurface 217 本機平颱錶麵已創建或即將被銷毀 ( QPlatformSurfaceEvent ).
QEvent::Polish 75 Widget 被拋光。
QEvent::PolishRequest 74 Widget 應該被拋光。
QEvent::QueryWhatsThis 123 Widget 應該接受事件若它擁有 What's This? 幫助 ( QHelpEvent ).
QEvent::Quit 20 應用程序已退齣。
QEvent::ReadOnlyChange (since Qt 5.4) 106 Widget 的隻讀狀態已改變。
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 (since Qt 5.9) 219 Wacom 數位闆追蹤狀態已改變。
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 次序已改變。從不將此事件發送給頂層窗口。
QEvent::SafeAreaMarginsChange (since Qt 6.9) 227 The window's safe area margins have changed.

用戶事件應擁有的值介於 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 )

成員函數文檔編製

[explicit] QEvent:: QEvent ( QEvent::Type type )

構造事件對象為類型 type .

[virtual noexcept] 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 ().

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

返迴 true 若事件對象是 QInputEvent 或其子類之一。

該函數在 Qt 6.0 引入。

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

返迴 true 若事件對象是 QPointerEvent 或其子類之一。

該函數在 Qt 6.0 引入。

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

返迴 true 若事件對象是子類化的 QSinglePointEvent .

該函數在 Qt 6.0 引入。

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

注冊並返迴自定義事件類型。 hint 提供將被使用若可用,否則返迴值介於 QEvent::User and QEvent::MaxUser 尚未被注冊。 hint 被忽略若其值不介於 QEvent::User and QEvent::MaxUser .

返迴 -1 若已獲取所有可用值或程序正關閉。

注意: 此函數是 綫程安全 .

bool QEvent:: spontaneous () const

返迴 true 若事件發源於應用程序外 (係統事件);否則返迴 false .

QEvent::Type QEvent:: type () const

返迴事件類型。