Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Fregloin от Май 04, 2012, 10:46



Название: Обработка событий касаний сенсорного экрана в GraphicsView
Отправлено: Fregloin от Май 04, 2012, 10:46
Кто подскажет, как корректно отлавливать и обрабатывать события касаний сенсорного экрана на сцене GraphicsView?
Есть сцена, на ней куча элементов, (как виджеты-кнопки, так и самописные сложные элементы). Есть 42 дюймовый сенсорный промышленный экран с usb выходом.
Работает как в винде так и линуксе. опознается как устройство ввода, но работает как обычная мышь.
Причем в винде если задержать палец, выскакивает контекстное меню, а в линуксе никакой реакции.
Программа работает с мышью, а теперь заказчик хочет что бы еще поддерживала сенсоры. Почитал про QTouchEvent, но так и не понял как его отловить на сцене.


Название: Re: Обработка событий касаний сенсорного экрана в GraphicsView
Отправлено: V1KT0P от Май 04, 2012, 13:38
Кто подскажет, как корректно отлавливать и обрабатывать события касаний сенсорного экрана на сцене GraphicsView?
Есть сцена, на ней куча элементов, (как виджеты-кнопки, так и самописные сложные элементы). Есть 42 дюймовый сенсорный промышленный экран с usb выходом.
Работает как в винде так и линуксе. опознается как устройство ввода, но работает как обычная мышь.
Причем в винде если задержать палец, выскакивает контекстное меню, а в линуксе никакой реакции.
Программа работает с мышью, а теперь заказчик хочет что бы еще поддерживала сенсоры. Почитал про QTouchEvent, но так и не понял как его отловить на сцене.
Не работал но думаю примерно так:
Наследуйся и переопредели QGraphicsView::event(QEvent *event). Внутри сравнивай QEvent::type() с QEvent::TouchBegin, QEvent::TouchUpdate или QEvent::TouchEnd. Если совпало то статик_кастом приводи event к типу QTouchEvent. И дальше передавай это все в свою функцию.


Название: Re: Обработка событий касаний сенсорного экрана в GraphicsView
Отправлено: Bepec от Май 04, 2012, 13:49
Если у вас панельный компьютер(как правило промышленный), то все тачи обрабатываются как нажатия мышкой... Проблем вроде не вижу, но могу и ошибаться в вашем, конкретном, случае.


Название: Re: Обработка событий касаний сенсорного экрана в GraphicsView
Отправлено: bra1ss от Май 05, 2012, 08:25
а как быть с мультитачем?


Название: Re: Обработка событий касаний сенсорного экрана в GraphicsView
Отправлено: Bepec от Май 05, 2012, 08:31
Промышленные мультитач не поддерживают. Во всяком случае продукция Advantech.


Название: Re: Обработка событий касаний сенсорного экрана в GraphicsView
Отправлено: Fregloin от Май 10, 2012, 19:36
у нас мониторы фирмы Elo touch - действительно они обрабабатываются как мышь. но к сожалению в линуксе в xfce я не знаю как сэмулировать нажатие правой кнопки для вызова контекстного меню. боюсь придётся делать костыли...


Название: Re: Обработка событий касаний сенсорного экрана в GraphicsView
Отправлено: Bepec от Май 11, 2012, 00:01
Ну костыли в любом случае придётся делать. Сам работаю с промышленными панельниками - имитация правой кнопки мышки и только. Как вариант сделай как в тотал коммандере.

Нажатие => таймер => больше скольки-то => вызов контекстного.