Qt mouse move events not caught by an event filter

Gerstmann picture Gerstmann · Jun 22, 2011 · Viewed 7.4k times · Source

I can't seem to catch QEvent::MouseMove typed events in my eventFilter.

Here's my event filter:

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 );
   }
}

I install the filters like this:

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

The event filter seems to catch mousePress and mouseRelease events just fine, but not mouseMove.

What could be the problem?

Answer

Gerstmann picture Gerstmann · Jun 22, 2011

It turns out that I was looking for wrong kind of mouseMove events.

I should've been catching QEvent::GraphicsSceneMouseMove events instead of QEvent::MouseMove events.