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類中的函式。下面通過具體的...