Qt 的事件監聽和事件過濾

2022-06-23 04:03:14 字數 907 閱讀 5523

qt 產品級的開發專案中經常會用到一些自定義控制項,從而達到一些可定製化的效果,這時候往往需要重寫它的監聽事件,滿足產品的需求。這裡用乙個簡單的例子記錄一下思路:

新建乙個diylabel 繼承

qlabel

,重寫enterevent

和 mousepressevent (例子)

diylabel 的實現

在qt 設計師介面新增乙個

label

並提公升為

diylabel

型別

這時候就監聽了滑鼠的進入和點選事件。

這是通過重寫控制項的監聽事件實現,我們也可以給介面安裝事件過濾器,這時候需要重寫eventfilter 函式

主窗體:

安裝過濾器和實現eventfilter 函式

我們處理裡滑鼠右鍵點選事件,滑鼠左鍵的事件呼叫標準的事件處理,這時候事件會來到我們剛重寫的mousepressevent 中。

執行結果:

Qt 事件過濾

qt的事件處理有5中級別 1.重寫控制項的事件處理函式 如重寫keypressevent mousepressevent 和paintevent 這是最常用的事件處理方法,我們已經看到過很多這樣的例子了。2.重寫qobject event 在事件到達事件處理函式時處理它。在需要改變tab鍵的慣用法時...

QT 事件過濾器 滾輪事件

this installeventfilter this 註冊監視物件下面是eventfilter函式 bool xx eventfilter qobject obj,qevent e else page resize size return true else else if wheelevent...

Qt事件系統之五 事件過濾器和事件的傳送

qt提供了事件過濾器來實現在乙個部件中監控其他多個部件的事件。事件過濾器與其他部件不同,它不是乙個類,只是由兩個函式組成的一種操作,用來完成乙個部件對其他部件的事件的監視。這兩個函式分別是 installeventfilter 和 eventfilter 都是qobject類中的函式。下面通過具體的...