一個事件由一個特定的QEvent子類來表示,如QMouseEvent、QKeyEvent函數
處理一個事件的方法:對象
方法一:從新實現部件的paintEvent、mousePressEvent等事件處理函數。 最經常使用,不過只能處理特定部件的特色事件。事件
方法二:在對象上安裝事件過濾器。使用事件過濾器能夠在一個界面類中同時處理不一樣子部件的不一樣事件。 也比較經常使用編譯器
方法三:從新實現event函數,相似於第一種,但能夠處理多種不一樣事件。編譯
Qt 中,事件的傳遞順序是:event
1. 先進入事件過濾器。方法
2. 而後經過事件過濾器能夠判斷是哪一個部件發生的事件。界面
3. 再執行該焦點部件的event()函數。參數
4. 最後是焦點部件的事件處理函數,如keyPressEvent()。
5. 若是焦點部件忽略了該事件(event->ignore()),那麼執行父部件的事件處理函數。
注意:event函數和事件處理函數是在焦點部件內從新定義的,而事件過濾器則是在焦點部件的父部件中從新定義。
在重寫事件處理函數的時候,有時候傳遞event參數沒有用到,這時編譯器會報警告,加上「Q_UNUSED(event);」 這樣就不會報警告了。