Я обнаруживаю жесты касания в своем приложении Qt следующим образом:
void CameraController::handleTouch(QTouchEvent *event)
{
/*
* Just 2 fingers on touch screen
*/
if (event->touchPoints().length() == 2) {
QTouchEvent::TouchPoint point1 = event->touchPoints().at(0);
QTouchEvent::TouchPoint point2 = event->touchPoints().at(1);
/*
* Both fingers are "moving"
*/
if (point1.state() == Qt::TouchPointMoved &&
point2.state() == Qt::TouchPointMoved) {
qDebug() << __func__ << "Gesture: 2-fingers!";
handleGesture2fingers(point1, point2);
}
}
/*
* Only 1 finger on touch screen
*/
} else if (event->touchPoints().length() == 1) {
QTouchEvent::TouchPoint point = event->touchPoints().at(0);
/*
* The finger is moving
*/
switch (point.state()) {
case Qt::TouchPointMoved:
qDebug() << __func__ << "Gesture: single finger!";
handleGestureSingleFinger(point);
break;
default:
break;
}
/*
* Three fingers on touch screen
*/
} else if (event->touchPoints().length() == 3) {
QTouchEvent::TouchPoint point1 = event->touchPoints().at(0);
QTouchEvent::TouchPoint point2 = event->touchPoints().at(1);
QTouchEvent::TouchPoint point3 = event->touchPoints().at(2);
/*
* All 3 fingers are moving
*/
if (point1.state() == Qt::TouchPointMoved &&
point2.state() == Qt::TouchPointMoved &&
point3.state() == Qt::TouchPointMoved) {
qDebug() << __func__ << "Gesture: 3-fingers!";
handleGesture3fingers(point1, point2, point3);
}
}
}
К моему удивлению, мои жесты мешают друг другу, как показывают мои журналы, жест 2-finger
мешает жесту 3-finger
:
handleTouch Gesture: 2-fingers!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: 3-fingers!
handleTouch Gesture: 3-fingers!
handleTouch Gesture: 3-fingers!
handleTouch Gesture: 3-fingers!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: 2-fingers!
Также single-finger
жест, мешающий 2-finger
жест:
handleTouch Gesture: 2-fingers!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: single finger!
handleTouch Gesture: single finger!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: single finger!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: single finger!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: single finger!
handleTouch Gesture: 2-fingers!
Помехи оказывают негативное влияние на пользовательский опыт. Интересно, как лучше избегать этих жестов?
UPDATE
Я не менял код, но сегодня я вижу, что приложение работает хорошо, а пользовательский опыт - хороший! Возможно, устройство с сенсорным экраном, с которым я работал вчера, НЕ было надежным:)