Я занимаюсь разработкой приложения на базе QT (QT 5.2) для планшетов с Windows 8. Я хотел бы предоставить поддержку multi-touch и мыши для перемещения, масштабирования и перевода изображений, отображаемых в виджете. Моя проблема подсвечивается следующей переопределенной функцией event ():
bool myWidget::event(QEvent *e)
{
switch(e->type())
{
case QEvent::TouchBegin:
{
QTouchEvent *touchEvent = static_cast<QTouchEvent *>(e);
QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
if (touchPoints.count() == 1)
std::cout << "Only 1 touch" << std::endl;
else
std::cout << "More than 1 touch" << std::endl;
}
default:
return QWidget::event(e);
}
return true;
}
Независимо от того, сколько пальцев используется для прикосновения к экрану, событие TouchBegin содержит только 1 TouchPoint. Как отличить жест одним пальцем от жеста несколькими пальцами, если исходное событие TouchBegin содержит только 1 TouchPoint? Кроме того, переопределенному mousePressEvent также отправляется событие, когда несколько пальцев касаются поверхности, что еще более затрудняет анализ.
Любой совет?
Задача ещё не решена.
Других решений пока нет …