事件筛选器未捕获Qt鼠标移动事件

事件筛选器未捕获Qt鼠标移动事件,qt,events,qevent,Qt,Events,Qevent,我似乎无法在eventFilter中捕获QEvent::MouseMove类型的事件 这是我的事件过滤器: bool MapWidget_c::eventFilter( QObject *obj, QEvent *ev ) { if( obj == graphicsGeoMap_mp || obj == graphicsScene_mp || obj == graphicsView_mp ) { if( ev->type() == QEv

我似乎无法在eventFilter中捕获QEvent::MouseMove类型的事件

这是我的事件过滤器:

bool
MapWidget_c::eventFilter( QObject *obj, QEvent *ev )
{
   if( obj == graphicsGeoMap_mp ||
       obj == graphicsScene_mp ||
       obj == graphicsView_mp )
   {
      if( ev->type() == QEvent::MouseMove )
      {
         QMouseEvent *mouseEvent = static_cast< QMouseEvent* >( ev );

         mouseMoveEvent( mouseEvent );

         return true;
      }
      else
      {
         return false;
      }
   }
   else
   {
      // pass the event on to the parent class
      return QWidget::eventFilter( obj, ev );
   }
}
事件过滤器似乎可以捕获mousePress和mouseRelease事件,但不能捕获mouseMove


可能是什么问题?

通常不启用鼠标移动事件。您需要在wigdet上启用鼠标跟踪(via)以获取它们

发件人:

只有在按下鼠标按钮时才会发生鼠标移动事件,除非使用QWidget::setMouseTracking()启用了鼠标跟踪


结果发现我在寻找错误的mouseMove事件

我应该捕捉
QEvent::graphicscenemousemove
事件,而不是
QEvent::MouseMove
事件

graphicsGeoMap_mp->installEventFilter( this ); //QGraphicsGeoMap
graphicsScene_mp->installEventFilter( this ); //QGraphicsScene
graphicsView_mp->installEventFilter( this ); //QGraphicsScene