QT 事件的傳遞先後順序

 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()方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章