Qt提供5個級別的事件處理和過濾 (從後到先):
1、重新實現事件函數。 比如: mousePressEvent(), keyPress-Event(), paintEvent() 。
這是最常規的事件處理方法。
2、重新實現QObject::event().
這一般用在Qt沒有提供該事件的處理函數時。也就是,我們增加新的事件時。
3、安裝事件過濾器
installEventFilter() -- bool eventFilter(QObject *target, QEvent *event)
4、在 QApplication 上安裝事件過濾器。
這之所以被單獨列出來是因爲: QApplication 上的事件過濾器將捕獲應用程序的所有事件,而且***個獲得該事件。也就是說事件在發送給其它任何一個event filter之前發送給QApplication的event filter。
5、重新實現QApplication 的 notify()方法.
Qt使用 notify()來分發事件。要想在任何事件處理器捕獲事件之前捕獲事件,***的方法就是重新實現QApplication 的 notify()方法。