2017-03-20 43 views
0

爲什麼我們不能QAbstractScrollArea正常方式安裝一個事件過濾器:安裝事件過濾器QAbstractScrollArea

obj->installEventFilter(this) 

相反,我們應該對QAbstractScrollArea::viewport()安裝事件過濾器。爲什麼導致這種方式?

回答

0

爲什麼你認爲你不能在QAbstractScrollArea上安裝事件過濾器? 你可以,但它取決於你想要得到的事件,視口或QAbstractScrolArea的事件。

例如文檔有關void QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e)說:

contextMenuEvent事件處理程序可以在子類中重新實現接收上下文菜單事件視窗()部件。

因此,通過在QAbstractScrollArea中安裝事件過濾器,您應該會收到此事件。但是,當您想要在視口小部件中接收鼠標按下或鼠標移動事件時,應該在視口小部件中安裝事件過濾器。