为 QAbstractScrollArea 安装事件过滤器



为什么我们不能以正常方式安装事件过滤器QAbstractScrollArea

obj->installEventFilter(this)

相反,我们应该在 QAbstractScrollArea::viewport() 上安装事件过滤器。为什么会导致这种方式?

为什么您认为不能在QAbstractScrollArea上安装事件过滤器?可以,但这取决于您要获取的事件,视口或QAbstractScrolArea的事件。

例如,有关void QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e)的文档说:

contextMenuEvent事件处理程序可以在子类中重新实现,以接收 viewport(( 小部件的上下文菜单事件。

因此,通过在QAbstractScrollArea中安装事件过滤器,您应该会收到此事件。但是,当您想在视口小部件中接收鼠标按下或鼠标移动事件时,您应该在视口小部件中安装事件过滤器。

最新更新