Próbowałem "Przykład Gestów obrazów" z http://doc.qt.digia.com/4.6/gestures-imagegestures.html. W tym przykładzie masz tylko 3 gesty: PanGesture, PinchGesture i SwipeGesture. Ale Qt oferuje 5 gestówQt, Gesty. TapAndHold i Swipe nie są rozpoznawane
- TapGesture
- TapAndHoldGesture
- PanGesture
- PinchGesture
- SwipeGesture
W celu rozpoznania wszystkie 5 gesty musimy napisać do ImageWidget-Konstruktora :
grabGesture(Qt::TapGesture);
grabGesture(Qt::TapAndHoldGesture);
grabGesture(Qt::PanGesture);
grabGesture(Qt::PinchGesture);
grabGesture(Qt::SwipeGesture);
dodałem metodę GestureEvent() Również
bool ImageWidget::gestureEvent(QGestureEvent *event)
{
if (QGesture *swipe = event->gesture(Qt::SwipeGesture))
swipeTriggered(static_cast<QSwipeGesture *>(swipe));
else if (QGesture *pan = event->gesture(Qt::PanGesture))
panTriggered(static_cast<QPanGesture *>(pan));
if (QGesture *pinch = event->gesture(Qt::PinchGesture))
pinchTriggered(static_cast<QPinchGesture *>(pinch));
if (QGesture *tap = event->gesture(Qt::TapGesture))
tapTriggered(static_cast<QTapGesture *>(tap));
if (QGesture *tapandhold = event->gesture(Qt::TapAndHoldGesture))
{
tapandholdTriggered(static_cast<QTapAndHoldGesture *>(tapandhold));
}
return true;
}
i zapisu metody brakujące jak
void ImageWidget::tapTriggered(QTapGesture *gesture)
{
qDebug() << "TAP" << gesture->position();
}
void ImageWidget::tapandholdTriggered(QTapAndHoldGesture *tapandhold)
{
qDebug() << "TAPANDHOLD";
}
więc moje pytanie brzmi, dlaczego gesty Swipe i TapAndHold nie są rozpoznawane? Gesty te są również realizowane w postaci trzech rozpoznawanych gestów (Pan, Pinch i Tap). Dlaczego to nie działa?
Dziękuję z góry za pomocą
Zrozumiałeś to? Próbuję również zrozumieć przechwytywanie gestów w QListWidget. –
Rozwiązałeś to? Mam także ten sam problem. – Tarantula