日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt之QEvent

發(fā)布時(shí)間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt之QEvent 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


簡(jiǎn)述

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

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

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

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

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


成員類型

枚舉QEvent::Type:

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

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

用戶事件的值應(yīng)該介于 User 和 MaxUser 之間。

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

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

屬性文檔

accepted : bool

設(shè)置 accept 標(biāo)志意味著接收器需要該事件,不需要的事件可能會(huì)被傳遞給它的父窗口。默認(rèn)情況下,isAccepted() 設(shè)置為 true。不能依賴于此,因?yàn)樽宇惪赡軙?huì)在子類構(gòu)造器中清除該標(biāo)志。

出于簡(jiǎn)便考慮,accept 標(biāo)志可以通過 accept() 設(shè)置,ignore() 清除。

訪問函數(shù):

  • bool isAccepted() const
  • void setAccepted(bool accepted)

成員函數(shù)文檔

  • void QEvent::accept()
    設(shè)置事件對(duì)象的 accept 標(biāo)志,等價(jià)于 setAccepted(true)。

    設(shè)置 accept 標(biāo)志意味著接收器需要該事件,不需要的事件可能會(huì)被傳遞給它的父窗口。

  • void QEvent::ignore()
    清除事件對(duì)象的 accept 標(biāo)志,等價(jià)于 setAccepted(false)。

    清除 accept 標(biāo)志意味著事件接收器不需要該事件,不需要的事件可能會(huì)被傳遞給它的父窗口。

  • [static] int QEvent::registerEventType(int hint = -1)
    注冊(cè)并返回一個(gè)自定義事件類型。如果 hint 是合法的,則會(huì)返回這個(gè)值;否則,會(huì)返回介于 QEvent::User 和 QEvent::MaxUser 之間的一個(gè)尚未被注冊(cè)的值。如果其值不在 QEvent::User 和 QEvent::MaxUser 之間,hint 值將被忽略。

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

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

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

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

總結(jié)

以上是生活随笔為你收集整理的Qt之QEvent的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。