Qt 事件過濾器

2021-10-21 02:15:23 字數 928 閱讀 4284

目標部件有事件產生後,首先會傳遞給監視物件(事件過濾器)進行處理而不是該事件對應的事件處理器。所以說我們可以截獲事件進行處理。監視物件截獲目標物件的事件後就會呼叫自己的eventfilter()函式處理這些事件。

bool qobject::eventfilter ( qobject * object, qevent * event )

;

返回true,表示該事件也被過濾掉(處理),無需再**了

返回false,則正常**給object

用起來就兩個步驟:

對目標物件呼叫installeventfilter()來註冊監視物件(事件過濾器);

重寫監視物件的eventfilter()函式處理目標物件的事件。

mainwindow::

mainwindow

(qwidget *parent)

:qmainwindow

(parent),ui

(new ui::mainwindow)

mainwindow::

~mainwindow()

//重寫

bool mainwindow::

eventfilter

(qobject *object, qevent *event)

}return

false;}

//其它部件產生的事件則交給基類處理

return qobject::

eventfilter

(object, event)

;}

標頭檔案中

protected

:bool

eventfilter

(qobject *object, qevent *event)

;

Qt 事件過濾器

qt 事件模型乙個真正強大的特色是乙個qobject的例項能夠管理另乙個qobject 例項的事件。乙個事件過濾器的安裝需要下面2個步驟 1 呼叫installeventfilter 註冊需要管理的物件。2 在eventfilter 裡處理需要管理的物件的事件。偽 如下 pfilterlineedi...

Qt事件過濾器

昨天發了blog之後,提供一種不用子類化的方式來實現左鍵雙擊,就是使用qobject提供的事件過濾器來實現對其他物件的事件進行響應。這裡先安裝對應物件的事件過濾器,installeventfilter this 這樣只要該物件產生事件,就會先執行本物件的eventfilter 函式,在該函式裡先判斷...

QT 事件過濾器 滾輪事件

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