是否可以在QGraphicsItem?上设置事件过滤器?Eventfilter有一个param给你一个QObject,但既然QGraphicsItem不是派生出来的QObject,那么它将如何运作?
Fra*_*eld 11
QGraphicsItem不是QObject,但它们仍然接收由QGraphicsScene管理的事件.它还支持事件过滤.QGraphicsItem :: installSceneEventFilter(QGraphicsItem*filterItem)安装另一个项目来接收事件.覆盖过滤器项中的sceneEventFilter()以处理它们.它类似于QObject :: eventFilter.重要提示:您必须已将安装过滤器的项目添加到场景中以使其正常工作.
如果过滤器项除了过滤器之外什么都不做,我认为最简单的方法是从QGraphicsItem派生,实现paint()不做任何事情,boundingRect()返回一个空的rect.并重新实现sceneEventFilter当然.
另请注意,QGraphicsView上下文中的某些事件类发生了更改,例如QMouseEvent变为QGraphicsSceneMouseEvent,因此请确保过滤正确的事物.