Qt之QEvent(全部事件的翻譯)

QEvent 類是全部事件類的基類,事件對象包含事件參數。安全

Qt 的主事件循環(QCoreApplication::exec())從事件隊列中獲取本地窗口系統事件,將它們轉化爲 QEvents,而後將轉換後的事件發送給 QObjects。app

通常來講,事件來自底層窗口系統(spontaneous() 返回 true),但也可使用 QCoreApplication::sendEvent() 和 QCoreApplication::postEvent()(spontaneous() 返回 false)來手動發送事件。異步

QObjects 經過調用它們的 QObject::event() 函數接收事件。該函數能夠在子類中從新實現,來處理自定義的事件以及添加額外的事件類型,QWidget::event() 就是一個很著名的例子。默認狀況下,像 QObject::timerEvent() 和 QWidget::mouseMoveEvent() 這樣的事件能夠被髮送給事件處理函數。QObject::installEventFilter() 容許一個對象攔截髮往另外一個對象的事件。ide

基本的 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 之間。post

常量 描述
QEvent::User 1000 用戶定義的事件
QEvent::MaxUser 65535 最後的用戶事件 ID

爲方便起見,可使用 registerEventType() 函數來註冊和存儲一個自定義事件類型,這樣作會避免意外地重用一個自定義事件類型。字體

屬性文檔

accepted : boolui

設置 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 
      返回事件的類型

http://blog.csdn.net/liang19890820/article/details/51933153

相關文章
相關標籤/搜索