您好,登錄后才能下訂單哦!
QEvent 類是所有事件類的基類,事件對象包含事件參數。
Qt 的主事件循環(QCoreApplication::exec())從事件隊列中獲取本地窗口系統事件,將它們轉化為 QEvents,然后將轉換后的事件發送給 QObjects。
一般來說,事件來自底層窗口系統(spontaneous() 返回 true),但也可以使用 QCoreApplication::sendEvent() 和 QCoreApplication::postEvent()(spontaneous() 返回 false)來手動發送事件。
QObjects 通過調用它們的 QObject::event() 函數接收事件。該函數可以在子類中重新實現,來處理自定義的事件以及添加額外的事件類型,QWidget::event() 就是一個很著名的例子。默認情況下,像 QObject::timerEvent() 和 QWidget::mouseMoveEvent() 這樣的事件可以被發送給事件處理函數。QObject::installEventFilter() 允許一個對象攔截發往另一個對象的事件。
基本的 QEvent 只包含了一個事件類型參數。QEvent 的子類包含了額外的描述特定事件的參數。
簡述
成員類型
屬性文檔
成員函數文檔
更多參考
枚舉QEvent::Type:
這個枚舉類型定義了Qt中有效的事件類型。事件類型和每個類型的專門類如下:
常量 | 值 | 描述 |
---|---|---|
QEvent::None | 0 | 不是一個事件 |
QEvent::ActionAdded | 114 | 一個新 action 被添加(QActionEvent) |
QEvent::ActionChanged | 113 | 一個 action 被改變(QActionEvent) |
QEvent::ActionRemoved | 115 | 一個 action 被移除(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 | 一個部件的孩子被拋光(QChildEvent) |
QEvent::ChildRemoved | 71 | 一個對象時區孩子(QChildEvent) |
QEvent::Clipboard | 40 | 剪貼板的內容發生改變 |
QEvent::Close | 19 | Widget 被關閉(QCloseEvent) |
QEvent::CloseSoftwareInputPanel | 200 | 一個部件要關閉軟件輸入面板(SIP) |
QEvent::ContentsRectChange | 178 | 部件內容區域的外邊距發生改變 |
QEvent::ContextMenu | 82 | 上下文彈出菜單(QContextMenuEvent) |
QEvent::CursorChange | 183 | 部件的鼠標發生改變 |
QEvent::DeferredDelete | 52 | 對象被清除后將被刪除(QDeferredDeleteEvent) |
QEvent::DragEnter | 60 | 在拖放操作期間鼠標進入窗口部件(QDragEnterEvent) |
QEvent::DragLeave | 62 | 在拖放操作期間鼠標離開窗口部件(QDragLeaveEvent) |
QEvent::DragMove | 61 | 拖放操作正在進行(QDragMoveEvent) |
QEvent::Drop | 63 | 拖放操作完成(QDropEvent) |
QEvent::DynamicPropertyChange | 170 | 動態屬性已添加、更改或從對象中刪除 |
QEvent::EnabledChange | 98 | 部件的 enabled 狀態已更改 |
QEvent::Enter | 10 | 鼠標進入部件的邊界(QEnterEvent) |
QEvent::EnterEditFocus | 150 | 編輯部件獲得焦點進行編輯,必須定義 QT_KEYPAD_NAVIGATION |
QEvent::EnterWhatsThisMode | 124 | 當應用程序進入“What’s This?”模式,發送到 toplevel 頂層部件 |
QEvent::Expose | 206 | 當其屏幕上的內容無效,發送到窗口,并需要從后臺存儲刷新 |
QEvent::FileOpen | 116 | 文件打開請求(QFileOpenEvent) |
QEvent::FocusIn | 8 | 部件或窗口獲得鍵盤焦點(QFocusEvent) |
QEvent::FocusOut | 9 | 部件或窗口失去鍵盤焦點(QFocusEvent) |
QEvent::FocusAboutToChange | 23 | 部件或窗口焦點即將改變(QFocusEvent) |
QEvent::FontChange | 97 | 部件的字體發生改變 |
QEvent::Gesture | 198 | 觸發了一個手勢(QGestureEvent) |
QEvent::GestureOverride | 202 | 觸發了手勢覆蓋(QGestureEvent) |
QEvent::GrabKeyboard | 188 | Item 獲得鍵盤抓取(僅限 QGraphicsItem) |
QEvent::GrabMouse | 186 | 項目獲得鼠標抓取(僅限 QGraphicsItem) |
QEvent::GraphicsSceneContextMenu | 159 | 在圖形場景上的上下文彈出菜單(QGraphicsScene ContextMenuEvent) |
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 | 部件被移動(QGraphicsSceneMoveEvent) |
QEvent::GraphicsSceneResize | 181 | 部件已調整大小(QGraphicsSceneResizeEvent) |
QEvent::GraphicsSceneWheel | 168 | 鼠標滾輪在圖形場景中滾動(QGraphicsSceneWheelEvent) |
QEvent::Hide | 18 | 部件被隱藏(QHideEvent) |
QEvent::HideToParent | 27 | 子部件被隱藏(QHideEvent) |
QEvent::HoverEnter | 127 | 鼠標進入懸停部件(QHoverEvent) |
QEvent::HoverLeave | 128 | 鼠標留離開懸停部件(QHoverEvent) |
QEvent::HoverMove | 129 | 鼠標在懸停部件內移動(QHoverEvent) |
QEvent::IconDrag | 96 | 窗口的主圖標被拖走(QIconDragEvent) |
QEvent::IconTextChange | 101 | 部件的圖標文本發生改變(已棄用) |
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 | 部件的布局需要重做 |
QEvent::Leave | 11 | 鼠標離開部件的邊界 |
QEvent::LeaveEditFocus | 151 | 編輯部件失去編輯的焦點,必須定義 QT_KEYPAD_NAVIGATION |
QEvent::LeaveWhatsThisMode | 125 | 當應用程序離開“What’s This?”模式,發送到頂層部件 |
QEvent::LocaleChange | 88 | 系統區域設置發生改變 |
QEvent::NonClientAreaMouseButtonDblClick | 176 | 鼠標雙擊發生在客戶端區域外 |
QEvent::NonClientAreaMouseButtonPress | 174 | 鼠標按鈕按下發生在客戶端區域外 |
QEvent::NonClientAreaMouseButtonRelease | 175 | 鼠標按鈕釋放發生在客戶端區域外 |
QEvent::NonClientAreaMouseMove | 173 | 鼠標移動發生在客戶區域外 |
QEvent::MacSizeChange | 177 | 用戶更改了部件的大小(僅限 OS X) |
QEvent::MetaCall | 43 | 通過 QMetaObject::invokeMethod() 調用異步方法 |
QEvent::ModifiedChange | 102 | 部件修改狀態發生改變 |
QEvent::MouseButtonDblClick | 4 | 鼠標再次按下(QMouseEvent) |
QEvent::MouseButtonPress | 2 | 鼠標按下(QMouseEvent) |
QEvent::MouseButtonRelease | 3 | 鼠標釋放(QMouseEvent) |
QEvent::MouseMove | 5 | 鼠標移動(QMouseEvent) |
QEvent::MouseTrackingChange | 109 | 鼠標跟蹤狀態發生改變 |
QEvent::Move | 13 | 部件的位置發生改變(QMoveEvent) |
QEvent::NativeGesture | 197 | 系統檢測到手勢(QNativeGestureEvent) |
QEvent::OrientationChange | 208 | 屏幕方向發生改變(QScreenOrientationChangeEvent) |
QEvent::Paint | 12 | 需要屏幕更新(QPaintEvent) |
QEvent::PaletteChange | 39 | 部件的調色板發生改變 |
QEvent::ParentAboutToChange | 131 | 部件的 parent 將要更改 |
QEvent::ParentChange | 21 | 部件的 parent 發生改變 |
QEvent::PlatformPanel | 212 | 請求一個特定于平臺的面板 |
QEvent::PlatformSurface | 217 | 原生平臺表面已創建或即將被銷毀(QPlatformSurfaceEvent) |
QEvent::Polish | 75 | 部件被拋光 |
QEvent::PolishRequest | 74 | 部件應該被拋光 |
QEvent::QueryWhatsThis | 123 | 如果部件有“What’s This?”幫助,應該接受事件 |
QEvent::ReadOnlyChange | 106 | 部件的 read-only 狀態發生改變 |
QEvent::RequestSoftwareInputPanel | 199 | 部件想要打開軟件輸入面板(SIP) |
QEvent::Resize | 14 | 部件的大小發生改變(QResizeEvent) |
QEvent::ScrollPrepare | 204 | 對象需要填充它的幾何信息(QScrollPrepareEvent) |
QEvent::Scroll | 205 | 對象需要滾動到提供的位置(QScrollEvent) |
QEvent::Shortcut | 117 | 快捷鍵處理(QShortcutEvent) |
QEvent::ShortcutOverride | 51 | 按下按鍵,用于覆蓋快捷鍵(QKeyEvent) |
QEvent::Show | 17 | 部件顯示在屏幕上(QShowEvent) |
QEvent::ShowToParent | 26 | 子部件被顯示 |
QEvent::SockAct | 50 | Socket 激活,用于實現 QSocketNotifier |
QEvent::StateMachineSignal | 192 | 信號被傳遞到狀態機(QStateMachine::SignalEvent) |
QEvent::StateMachineWrapped | 193 | 事件是一個包裝器,用于包含另一個事件(QStateMachine::WrappedEvent) |
QEvent::StatusTip | 112 | 狀態提示請求(QStatusTipEvent) |
QEvent::StyleChange | 100 | 部件的樣式發生改變 |
QEvent::TabletMove | 87 | Wacom 寫字板移動(QTabletEvent) |
QEvent::TabletPress | 92 | Wacom 寫字板按下(QTabletEvent) |
QEvent::TabletRelease | 93 | Wacom 寫字板釋放(QTabletEvent) |
QEvent::OkRequest | 94 | Ok 按鈕在裝飾前被按下,僅支持 Windows CE |
QEvent::TabletEnterProximity | 171 | Wacom 寫字板進入接近事件(QTabletEvent),發送到 QApplication |
QEvent::TabletLeaveProximity | 172 | Wacom 寫字板離開接近事件(QTabletEvent),發送到 QApplication |
QEvent::ThreadChange | 22 | 對象被移動到另一個線程。這是發送到此對象的最后一個事件在上一個線程中,參見:QObject::moveToThread() |
QEvent::Timer | 1 | 定時器事件(QTimerEvent) |
QEvent::ToolBarChange | 120 | 工具欄按鈕在 OS X 上進行切換 |
QEvent::ToolTip | 110 | 一個 tooltip 請求(QHelpEvent) |
QEvent::ToolTipChange | 184 | 部件的 tooltip 發生改變 |
QEvent::TouchBegin | 194 | 觸摸屏或軌跡板事件序列的開始(QTouchEvent) |
QEvent::TouchCancel | 209 | 取消觸摸事件序列(QTouchEvent) |
QEvent::TouchEnd | 196 | 觸摸事件序列結束(QTouchEvent) |
QEvent::TouchUpdate | 195 | 觸摸屏事件(QTouchEvent) |
QEvent::UngrabKeyboard | 189 | Item 失去鍵盤抓取(QGraphicsItem) |
QEvent::UngrabMouse | 187 | Item 失去鼠標抓取(QGraphicsItem、QQuickItem) |
QEvent::UpdateLater | 78 | 部件應該排隊在以后重新繪制 |
QEvent::UpdateRequest | 77 | 部件應該被重繪 |
QEvent::WhatsThis | 111 | 部件應該顯示“What’s This”幫助(QHelpEvent) |
QEvent::WhatsThisClicked | 118 | 部件的“What’s This”幫助鏈接被點擊 |
QEvent::Wheel | 31 | 鼠標滾輪滾動(QWheelEvent) |
QEvent::WinEventAct | 132 | 發生了 Windows 特定的激活事件 |
QEvent::WindowActivate | 24 | 窗口已激活 |
QEvent::WindowBlocked | 103 | 窗口被模態對話框阻塞 |
QEvent::WindowDeactivate | 25 | 窗戶被停用 |
QEvent::WindowIconChange | 34 | 窗口的圖標發生改變 |
QEvent::WindowStateChange | 105 | 窗口的狀態(最小化、最大化或全屏)發生改變(QWindowStateChangeEvent) |
QEvent::WindowTitleChange | 33 | 窗口的標題發生改變 |
QEvent::WindowUnblocked | 104 | 一個模態對話框退出后,窗口將不被阻塞 |
QEvent::WinIdChange | 203 | 本地窗口的系統標識符發生改變 |
QEvent::ZOrderChange | 126 | 部件的 z 值發生了改變,該事件不會發送給頂層窗口 |
用戶事件的值應該介于 User 和 MaxUser 之間。
常量 | 值 | 描述 |
---|---|---|
QEvent::User | 1000 | 用戶定義的事件 |
QEvent::MaxUser | 65535 | 最后的用戶事件 ID |
為方便起見,可以使用 registerEventType() 函數來注冊和存儲一個自定義事件類型,這樣做會避免意外地重用一個自定義事件類型。
accepted : bool
設置 accept 標志意味著接收器需要該事件,不需要的事件可能會被傳遞給它的父窗口。默認情況下,isAccepted() 設置為 true。不能依賴于此,因為子類可能會在子類構造器中清除該標志。
出于簡便考慮,accept 標志可以通過 accept() 設置,ignore() 清除。
訪問函數:
bool isAccepted() const
void setAccepted(bool accepted)
void QEvent::accept()
設置事件對象的 accept 標志,等價于 setAccepted(true)。
設置 accept 標志意味著接收器需要該事件,不需要的事件可能會被傳遞給它的父窗口。
void QEvent::ignore()
清除事件對象的 accept 標志,等價于 setAccepted(false)。
清除 accept 標志意味著事件接收器不需要該事件,不需要的事件可能會被傳遞給它的父窗口。
[static] int QEvent::registerEventType(int hint = -1)
注冊并返回一個自定義事件類型。如果 hint 是合法的,則會返回這個值;否則,會返回介于 QEvent::User 和 QEvent::MaxUser 之間的一個尚未被注冊的值。如果其值不在 QEvent::User 和 QEvent::MaxUser 之間,hint 值將被忽略。
如果可用的值被使用或程序關閉,將返回 -1。該函數是線程安全的。
bool QEvent::spontaneous() const
如果事件由應用程序之外產生的,比如一個系統事件,返回 true,否則返回 false。
對于繪制事件,該函數的返回值是未定義的。
Type QEvent::type() const
返回事件的類型
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。