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