溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

QT 事件類型1000個你知道多少?

發(fā)布時間:2020-07-31 21:23:22 來源:網(wǎng)絡 閱讀:2327 作者:WZM3558862 欄目:開發(fā)技術(shù)

簡述

QEvent 類是所有事件類的基類,事件對象包含事件參數(shù)。

Qt 的主事件循環(huán)(QCoreApplication::exec())從事件隊列中獲取本地窗口系統(tǒng)事件,將它們轉(zhuǎn)化為 QEvents,然后將轉(zhuǎn)換后的事件發(fā)送給 QObjects。

一般來說,事件來自底層窗口系統(tǒng)(spontaneous() 返回 true),但也可以使用 QCoreApplication::sendEvent() 和 QCoreApplication::postEvent()(spontaneous() 返回 false)來手動發(fā)送事件。

QObjects 通過調(diào)用它們的 QObject::event() 函數(shù)接收事件。該函數(shù)可以在子類中重新實現(xiàn),來處理自定義的事件以及添加額外的事件類型,QWidget::event() 就是一個很著名的例子。默認情況下,像 QObject::timerEvent() 和 QWidget::mouseMoveEvent() 這樣的事件可以被發(fā)送給事件處理函數(shù)。QObject::installEventFilter() 允許一個對象攔截發(fā)往另一個對象的事件。

基本的 QEvent 只包含了一個事件類型參數(shù)。QEvent 的子類包含了額外的描述特定事件的參數(shù)。

 

  • 簡述

  • 成員類型

  • 屬性文檔

  • 成員函數(shù)文檔

  • 更多參考

 

成員類型

枚舉QEvent::Type:

這個枚舉類型定義了Qt中有效的事件類型。事件類型和每個類型的專門類如下:

常量描述
QEvent::None0不是一個事件
QEvent::ActionAdded114一個新 action 被添加(QActionEvent)
QEvent::ActionChanged113一個 action 被改變(QActionEvent)
QEvent::ActionRemoved115一個 action 被移除(QActionEvent)
QEvent::ActivationChange99Widget 的頂層窗口激活狀態(tài)發(fā)生了變化
QEvent::ApplicationActivate121這個枚舉已被棄用,使用 ApplicationStateChange 代替
QEvent::ApplicationActivatedApplicationActivate這個枚舉已被棄用,使用 ApplicationStateChange 代替
QEvent::ApplicationDeactivate122這個枚舉已被棄用,使用 ApplicationStateChange 代替
QEvent::ApplicationFontChange36應用程序的默認字體發(fā)生了變化
QEvent::ApplicationLayoutDirectionChange37應用程序的默認布局方向發(fā)生了變化
QEvent::ApplicationPaletteChange38應用程序的默認調(diào)色板發(fā)生了變化
QEvent::ApplicationStateChange214應用程序的狀態(tài)發(fā)生了變化
QEvent::ApplicationWindowIconChange35應用程序的圖標發(fā)生了變化
QEvent::ChildAdded68一個對象獲得孩子(QChildEvent)
QEvent::ChildPolished69一個部件的孩子被拋光(QChildEvent)
QEvent::ChildRemoved71一個對象時區(qū)孩子(QChildEvent)
QEvent::Clipboard40剪貼板的內(nèi)容發(fā)生改變
QEvent::Close19Widget 被關(guān)閉(QCloseEvent)
QEvent::CloseSoftwareInputPanel200一個部件要關(guān)閉軟件輸入面板(SIP)
QEvent::ContentsRectChange178部件內(nèi)容區(qū)域的外邊距發(fā)生改變
QEvent::ContextMenu82上下文彈出菜單(QContextMenuEvent)
QEvent::CursorChange183部件的鼠標發(fā)生改變
QEvent::DeferredDelete52對象被清除后將被刪除(QDeferredDeleteEvent)
QEvent::DragEnter60在拖放操作期間鼠標進入窗口部件(QDragEnterEvent)
QEvent::DragLeave62在拖放操作期間鼠標離開窗口部件(QDragLeaveEvent)
QEvent::DragMove61拖放操作正在進行(QDragMoveEvent)
QEvent::Drop63拖放操作完成(QDropEvent)
QEvent::DynamicPropertyChange170動態(tài)屬性已添加、更改或從對象中刪除
QEvent::EnabledChange98部件的 enabled 狀態(tài)已更改
QEvent::Enter10鼠標進入部件的邊界(QEnterEvent)
QEvent::EnterEditFocus150編輯部件獲得焦點進行編輯,必須定義 QT_KEYPAD_NAVIGATION
QEvent::EnterWhatsThisMode124當應用程序進入“What’s This?”模式,發(fā)送到 toplevel 頂層部件
QEvent::Expose206當其屏幕上的內(nèi)容無效,發(fā)送到窗口,并需要從后臺存儲刷新
QEvent::FileOpen116文件打開請求(QFileOpenEvent)
QEvent::FocusIn8部件或窗口獲得鍵盤焦點(QFocusEvent)
QEvent::FocusOut9部件或窗口失去鍵盤焦點(QFocusEvent)
QEvent::FocusAboutToChange23部件或窗口焦點即將改變(QFocusEvent)
QEvent::FontChange97部件的字體發(fā)生改變
QEvent::Gesture198觸發(fā)了一個手勢(QGestureEvent)
QEvent::GestureOverride202觸發(fā)了手勢覆蓋(QGestureEvent)
QEvent::GrabKeyboard188Item 獲得鍵盤抓?。▋H限 QGraphicsItem)
QEvent::GrabMouse186項目獲得鼠標抓?。▋H限 QGraphicsItem)
QEvent::GraphicsSceneContextMenu159在圖形場景上的上下文彈出菜單(QGraphicsScene ContextMenuEvent)
QEvent::GraphicsSceneDragEnter164在拖放操作期間,鼠標進入圖形場景(QGraphicsSceneDragDropEvent)
QEvent::GraphicsSceneDragLeave166在拖放操作期間鼠標離開圖形場景(QGraphicsSceneDragDropEvent)
QEvent::GraphicsSceneDragMove165在場景上正在進行拖放操作(QGraphicsSceneDragDropEvent)
QEvent::GraphicsSceneDrop167在場景上完成拖放操作(QGraphicsSceneDragDropEvent)
QEvent::GraphicsSceneHelp163用戶請求圖形場景的幫助(QHelpEvent)
QEvent::GraphicsSceneHoverEnter160鼠標進入圖形場景中的懸停項(QGraphicsSceneHoverEvent)
QEvent::GraphicsSceneHoverLeave162鼠標離開圖形場景中一個懸停項(QGraphicsSceneHoverEvent)
QEvent::GraphicsSceneHoverMove161鼠標在圖形場景中的懸停項內(nèi)移動(QGraphicsSceneHoverEvent)
QEvent::GraphicsSceneMouseDoubleClick158鼠標在圖形場景中再次按下(雙擊)(QGraphicsSceneMouseEvent)
QEvent::GraphicsSceneMouseMove155鼠標在圖形場景中移動(QGraphicsSceneMouseEvent)
QEvent::GraphicsSceneMousePress156鼠標在圖形場景中按下(QGraphicsSceneMouseEvent)
QEvent::GraphicsSceneMouseRelease157鼠標在圖形場景中釋放(QGraphicsSceneMouseEvent)
QEvent::GraphicsSceneMove182部件被移動(QGraphicsSceneMoveEvent)
QEvent::GraphicsSceneResize181部件已調(diào)整大小(QGraphicsSceneResizeEvent)
QEvent::GraphicsSceneWheel168鼠標滾輪在圖形場景中滾動(QGraphicsSceneWheelEvent)
QEvent::Hide18部件被隱藏(QHideEvent)
QEvent::HideToParent27子部件被隱藏(QHideEvent)
QEvent::HoverEnter127鼠標進入懸停部件(QHoverEvent)
QEvent::HoverLeave128鼠標留離開懸停部件(QHoverEvent)
QEvent::HoverMove129鼠標在懸停部件內(nèi)移動(QHoverEvent)
QEvent::IconDrag96窗口的主圖標被拖走(QIconDragEvent)
QEvent::IconTextChange101部件的圖標文本發(fā)生改變(已棄用)
QEvent::InputMethod83正在使用輸入法(QInputMethodEvent)
QEvent::InputMethodQuery207輸入法查詢事件(QInputMethodQueryEvent)
QEvent::KeyboardLayoutChange169鍵盤布局已更改
QEvent::KeyPress6鍵盤按下(QKeyEvent)
QEvent::KeyRelease7鍵盤釋放(QKeyEvent)
QEvent::LanguageChange89應用程序翻譯發(fā)生改變
QEvent::LayoutDirectionChange90布局的方向發(fā)生改變
QEvent::LayoutRequest76部件的布局需要重做
QEvent::Leave11鼠標離開部件的邊界
QEvent::LeaveEditFocus151編輯部件失去編輯的焦點,必須定義 QT_KEYPAD_NAVIGATION
QEvent::LeaveWhatsThisMode125當應用程序離開“What’s This?”模式,發(fā)送到頂層部件
QEvent::LocaleChange88系統(tǒng)區(qū)域設置發(fā)生改變
QEvent::NonClientAreaMouseButtonDblClick176鼠標雙擊發(fā)生在客戶端區(qū)域外
QEvent::NonClientAreaMouseButtonPress174鼠標按鈕按下發(fā)生在客戶端區(qū)域外
QEvent::NonClientAreaMouseButtonRelease175鼠標按鈕釋放發(fā)生在客戶端區(qū)域外
QEvent::NonClientAreaMouseMove173鼠標移動發(fā)生在客戶區(qū)域外
QEvent::MacSizeChange177用戶更改了部件的大?。▋H限 OS X)
QEvent::MetaCall43通過 QMetaObject::invokeMethod() 調(diào)用異步方法
QEvent::ModifiedChange102部件修改狀態(tài)發(fā)生改變
QEvent::MouseButtonDblClick4鼠標再次按下(QMouseEvent)
QEvent::MouseButtonPress2鼠標按下(QMouseEvent)
QEvent::MouseButtonRelease3鼠標釋放(QMouseEvent)
QEvent::MouseMove5鼠標移動(QMouseEvent)
QEvent::MouseTrackingChange109鼠標跟蹤狀態(tài)發(fā)生改變
QEvent::Move13部件的位置發(fā)生改變(QMoveEvent)
QEvent::NativeGesture197系統(tǒng)檢測到手勢(QNativeGestureEvent)
QEvent::OrientationChange208屏幕方向發(fā)生改變(QScreenOrientationChangeEvent)
QEvent::Paint12需要屏幕更新(QPaintEvent)
QEvent::PaletteChange39部件的調(diào)色板發(fā)生改變
QEvent::ParentAboutToChange131部件的 parent 將要更改
QEvent::ParentChange21部件的 parent 發(fā)生改變
QEvent::PlatformPanel212請求一個特定于平臺的面板
QEvent::PlatformSurface217原生平臺表面已創(chuàng)建或即將被銷毀(QPlatformSurfaceEvent)
QEvent::Polish75部件被拋光
QEvent::PolishRequest74部件應該被拋光
QEvent::QueryWhatsThis123如果部件有“What’s This?”幫助,應該接受事件
QEvent::ReadOnlyChange106部件的 read-only 狀態(tài)發(fā)生改變
QEvent::RequestSoftwareInputPanel199部件想要打開軟件輸入面板(SIP)
QEvent::Resize14部件的大小發(fā)生改變(QResizeEvent)
QEvent::ScrollPrepare204對象需要填充它的幾何信息(QScrollPrepareEvent)
QEvent::Scroll205對象需要滾動到提供的位置(QScrollEvent)
QEvent::Shortcut117快捷鍵處理(QShortcutEvent)
QEvent::ShortcutOverride51按下按鍵,用于覆蓋快捷鍵(QKeyEvent)
QEvent::Show17部件顯示在屏幕上(QShowEvent)
QEvent::ShowToParent26子部件被顯示
QEvent::SockAct50Socket 激活,用于實現(xiàn) QSocketNotifier
QEvent::StateMachineSignal192信號被傳遞到狀態(tài)機(QStateMachine::SignalEvent)
QEvent::StateMachineWrapped193事件是一個包裝器,用于包含另一個事件(QStateMachine::WrappedEvent)
QEvent::StatusTip112狀態(tài)提示請求(QStatusTipEvent)
QEvent::StyleChange100部件的樣式發(fā)生改變
QEvent::TabletMove87Wacom 寫字板移動(QTabletEvent)
QEvent::TabletPress92Wacom 寫字板按下(QTabletEvent)
QEvent::TabletRelease93Wacom 寫字板釋放(QTabletEvent)
QEvent::OkRequest94Ok 按鈕在裝飾前被按下,僅支持 Windows CE
QEvent::TabletEnterProximity171Wacom 寫字板進入接近事件(QTabletEvent),發(fā)送到 QApplication
QEvent::TabletLeaveProximity172Wacom 寫字板離開接近事件(QTabletEvent),發(fā)送到 QApplication
QEvent::ThreadChange22對象被移動到另一個線程。這是發(fā)送到此對象的最后一個事件在上一個線程中,參見:QObject::moveToThread()
QEvent::Timer1定時器事件(QTimerEvent)
QEvent::ToolBarChange120工具欄按鈕在 OS X 上進行切換
QEvent::ToolTip110一個 tooltip 請求(QHelpEvent)
QEvent::ToolTipChange184部件的 tooltip 發(fā)生改變
QEvent::TouchBegin194觸摸屏或軌跡板事件序列的開始(QTouchEvent)
QEvent::TouchCancel209取消觸摸事件序列(QTouchEvent)
QEvent::TouchEnd196觸摸事件序列結(jié)束(QTouchEvent)
QEvent::TouchUpdate195觸摸屏事件(QTouchEvent)
QEvent::UngrabKeyboard189Item 失去鍵盤抓?。≦GraphicsItem)
QEvent::UngrabMouse187Item 失去鼠標抓?。≦GraphicsItem、QQuickItem)
QEvent::UpdateLater78部件應該排隊在以后重新繪制
QEvent::UpdateRequest77部件應該被重繪
QEvent::WhatsThis111部件應該顯示“What’s This”幫助(QHelpEvent)
QEvent::WhatsThisClicked118部件的“What’s This”幫助鏈接被點擊
QEvent::Wheel31鼠標滾輪滾動(QWheelEvent)
QEvent::WinEventAct132發(fā)生了 Windows 特定的激活事件
QEvent::WindowActivate24窗口已激活
QEvent::WindowBlocked103窗口被模態(tài)對話框阻塞
QEvent::WindowDeactivate25窗戶被停用
QEvent::WindowIconChange34窗口的圖標發(fā)生改變
QEvent::WindowStateChange105窗口的狀態(tài)(最小化、最大化或全屏)發(fā)生改變(QWindowStateChangeEvent)
QEvent::WindowTitleChange33窗口的標題發(fā)生改變
QEvent::WindowUnblocked104一個模態(tài)對話框退出后,窗口將不被阻塞
QEvent::WinIdChange203本地窗口的系統(tǒng)標識符發(fā)生改變
QEvent::ZOrderChange126部件的 z 值發(fā)生了改變,該事件不會發(fā)送給頂層窗口

用戶事件的值應該介于 User 和 MaxUser 之間。

常量描述
QEvent::User1000用戶定義的事件
QEvent::MaxUser65535最后的用戶事件 ID

為方便起見,可以使用 registerEventType() 函數(shù)來注冊和存儲一個自定義事件類型,這樣做會避免意外地重用一個自定義事件類型。

屬性文檔

accepted : bool

設置 accept 標志意味著接收器需要該事件,不需要的事件可能會被傳遞給它的父窗口。默認情況下,isAccepted() 設置為 true。不能依賴于此,因為子類可能會在子類構(gòu)造器中清除該標志。

出于簡便考慮,accept 標志可以通過 accept() 設置,ignore() 清除。

訪問函數(shù):

  • bool isAccepted() const

  • void setAccepted(bool accepted)

成員函數(shù)文檔

    • 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 值將被忽略。

      如果可用的值被使用或程序關(guān)閉,將返回 -1。該函數(shù)是線程安全的。

    • bool QEvent::spontaneous() const 
      如果事件由應用程序之外產(chǎn)生的,比如一個系統(tǒng)事件,返回 true,否則返回 false。

      對于繪制事件,該函數(shù)的返回值是未定義的。

    • Type QEvent::type() const 
      返回事件的類型


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI