Qt 事件過濾器

2021-07-26 10:46:30 字數 778 閱讀 2196

qt 事件模型乙個真正強大的特色是乙個qobject的例項能夠管理另乙個qobject 例項的事件。

乙個事件過濾器的安裝需要下面2個步驟:

1、呼叫installeventfilter()註冊需要管理的物件。

2、在eventfilter() 裡處理需要管理的物件的事件。

偽**如下:

pfilterlineedit->installeventfilter(new eventfilter(this));

class eventfilter : public qobject

;

eventfilter::eventfilter(qobject *parent)

: qobject(parent)

eventfilter::~eventfilter()

bool eventfilter::eventfilter(qobject *obj, qevent *event)}}

}return qobject::eventfilter(obj, event);

}

注意,如果你在事件過濾器中delete了某個接收元件,務必將返回值設為true。否則,qt還是會將事件分發給這個接收元件,從而導致程式崩潰。

事件過濾器和被安裝的元件必須在同一執行緒,否則,過濾器不起作用。另外,如果在install之後,這兩個元件到了不同的執行緒,那麼,只有等到二者重新回到同一執行緒的時候過濾器才會有效。

Qt 事件過濾器

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

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...