[Interest] Globally Converting QTapAndHoldGesture to Mouse Double Click

Joshua Grauman jnfo-c at grauman.com
Fri Feb 22 06:35:45 CET 2013


Hello all,

I'm trying to write a global proceedure to convert all QTapAndHoldGesture 
events to mouse double click events. I thought this should be trivial, but 
it's really stumping me.

I setup an event filter globally for my QApplication and grab the gesture 
as follow:
app.installEventFilter(&myobj);
mainWin->grabGesture(Qt::TapAndHoldGesture);

And then I have an event filter as follows:

bool myObject::eventFilter(QObject *obj, QEvent *e)
{
   if(e->type() == QEvent::Gesture)
   {
     QGestureEvent *event = static_cast<QGestureEvent*>(e);
     if(QGesture *gest = event->gesture(Qt::TapAndHoldGesture))
     {
       QTapAndHoldGesture *tah = static_cast<QTapAndHoldGesture *>(gest);
       QMouseEvent dblClk(QEvent::MouseButtonDblClick, tah->position().toPoint(), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
       QApplication::sendEvent(obj, &dblClk);
       return true;
     }
   }
}

I receive the gesture events fine, but for some reason when none of my 
widgets receive the double click events. I've tried lots of different 
options for instantiating my QMouseEvent. I've tried calling grabMouse on 
the widget before sending the event, but still nothing receives double 
click events. Does anyone have an idea of why none of my widgets receive 
the double click events?

Thanks!

Josh



More information about the Interest mailing list