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 .

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

該函數在 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

返迴事件類型。