Составители:
Рубрика:
103
Если этого не сделать, то компоновщик в некоторых
ситуациях (например, изменение ориентации устройства)
может изменить размеры виджета и координаты внутри
виджета перестанут совпадать с координатами изображения.
Возможно преобразовывать координаты на лету, но мы
вместо этого просто фиксируем размер виджета. В
приложении создан класс MyWidget – наследник MImageWidget,
к которому относится все вышенаписанное.
Теперь надо получить информацию от тачскрина. Большая
часть информации внутри Qt передается в виде событий –
наследников класса QEvent, попадающих в соответствующую
очередь, а через нее – к виджетам и другим элементам
приложения. События тачскрина относятся к классу
QTouchEvent и имеют всего 3 типа – QEvent::TouchBegin (начало
прикосновения), QEvent::TouchUpdate (движение по тачскрину),
QEvent::TouchEnd (окончание прикосновения. По умолчанию
они не доходят до нашего виджета в неизменном виде,
система преобразует их к событиям более высокого уровня
(например, QGestureEvent) и обрабатывает в другом месте. Для
получения события тачскрина надо вызвать метод
setAcceptTouchEvents(true).
Чтобы обрабатывать события, необходимо переопределить
обработчик bool MyWidget::event(QEvent *event). Такой
обработчик есть у каждого виджета и вообще может быть
реализован у любого наследника QObject. В новом
обработчике мы проверяем тип события, и если оно относится
к тачскрину – выполняем приведение типов, чтобы получить
доступ к специфичной информации:
QTouchEvent *touchevent =
static_cast<QTouchEvent*>(event);
Для приведения типов мы используем конструкцию
static_cast, использование dynamic_cast не рекомендуется, как
Страницы
- « первая
- ‹ предыдущая
- …
- 101
- 102
- 103
- 104
- 105
- …
- следующая ›
- последняя »
