Qt, Жесты. TapAndHold и Swipe не распознаются

Я попробовалПример изображения жестов " отhttp://doc.qt.digia.com/4.6/gestures-imagegestures.html, В этом примере у вас есть только 3 жеста: PanGesture, PinchGesture и SwipeGesture. Но Qt предоставляет 5 жестов:

TapGestureTapAndHoldGesturePanGesturePinchGestureSwipeGesture

Чтобы распознать все 5 жестов, нам нужно записать в ImageWidget-Constructor:

 grabGesture(Qt::TapGesture);
 grabGesture(Qt::TapAndHoldGesture);
 grabGesture(Qt::PanGesture);
 grabGesture(Qt::PinchGesture);
 grabGesture(Qt::SwipeGesture);

я также добавил метод gestEvent ()

bool ImageWidget::gestureEvent(QGestureEvent *event)
 {
     if (QGesture *swipe = event->gesture(Qt::SwipeGesture))
         swipeTriggered(static_cast(swipe));
     else if (QGesture *pan = event->gesture(Qt::PanGesture))
         panTriggered(static_cast(pan));
     if (QGesture *pinch = event->gesture(Qt::PinchGesture))
         pinchTriggered(static_cast(pinch));
     if (QGesture *tap = event->gesture(Qt::TapGesture))
         tapTriggered(static_cast(tap));
     if (QGesture *tapandhold = event->gesture(Qt::TapAndHoldGesture))
     {
         tapandholdTriggered(static_cast(tapandhold));
      }
     return true;
 }

и написать недостающие методы, такие как

void ImageWidget::tapTriggered(QTapGesture *gesture)
 {
    qDebug() < "TAP" < gesture->position();
 }

 void ImageWidget::tapandholdTriggered(QTapAndHoldGesture *tapandhold)
 {
     qDebug() < "TAPANDHOLD";
 }

Ответы на вопрос(2)

Ваш ответ на вопрос