obj->installEventFilter(filterObject);
常常是obj->installEventFilter(this).
發(fā)送到obj的所有事件, 都會(huì)先發(fā)送到filterObject的eventFilter()方法, 即filterObject會(huì)過濾obj的事件, 這樣就不用為了實(shí)現(xiàn)一個(gè)事件而要去繼承, 再實(shí)現(xiàn)一個(gè)類, 完成如mouse event, key event等了, 只用在當(dāng)前類中就可以通過事件過濾來完成.
bool QObject::eventFilter(QObject *watchedObject, QEvent *event) [virtual]
如果是安裝者的事件if (obj == watchedObject), 處理過此事件(event->type()), 返回true, 沒有處理就返回false.
如果不是安裝者的事件, 則把此事件拋給父類去處理:
if (obj == watchedObject) {
處理后返回true, 否則返回false.
} else {
return SuperClass::eventFilter(watchedObject, event);
}