Мультитач в Linux


У меня есть два вопроса:

  1. как имитировать событие касания в linux.
  2. Как работать с мультитачом на Qt в Linux.
2 6

2 ответа:

Вы можете имитировать события касания, вызывая qt_translateRawTouchEvent напрямую. (Этот метод не документирован, но он находится в qapplication.cpp и экспортируется).

Вы хотите поместить это в начало вашего файла:

// forward-declaration of Qt internal function
Q_GUI_EXPORT void qt_translateRawTouchEvent(QWidget *window, 
                                        QTouchEvent::DeviceType deviceType,
                                        const QList<QTouchEvent::TouchPoint> &touchPoints);

Синтаксис вызова функции:

qt_translateRawTouchEvent(targetWidget, deviceType, points.values());

В вашем случае вызовите этот метод с помощью (NULL, QTouchEvent::TouchScreen, touchPoints), где touchPoints - ваш список точек, к которым в данный момент прикасается пользователь. Это должно работать в Qt 4.7 и 4.8, по крайней мере, возможно, раньше в Qt 5, но я не проверял это.

Что касается вопроса о мультитач, вы, вероятно, хотите взглянуть на API жестов, добавленный Qt.