Класс QGestureRecognizer
Класс QGestureRecognizer предоставляет инфраструктуру для распознавания жестов. Подробнее...
| Заголовок: | #include <QGestureRecognizer> |
| qmake: | QT += widgets |
| С тех пор: | Qt 4.6 |
Типы публичного доступа
| флаги | Результат |
| перечисление | Флаг результата { Игнорировать, ВозможноЖест, СрабатываетЖест, ЗавершитьЖест, ОтменитьЖест, ПотреблятьСобытие } |
Функции публичного доступа
| QGestureRecognizer() | |
| виртуальный | ~QGestureRecognizer() |
| виртуальный QGesture * | создать(QObject *target) |
| виртуальный Результат | распознать(QGesture *gesture, QObject *watched, QEvent *event) = 0 |
| виртуальный void | сбросить(QGesture *gesture) |
Статические члены публичного доступа
| Qt::GestureType | зарегистрироватьРаспознаватель(QGestureRecognizer *recognizer) |
| void | отменитьРегистрациюРаспознавателя(Qt::GestureType type) |
Подробное описание
Класс QGestureRecognizer предоставляет инфраструктуру для распознавания жестов.
Распознаватели жестов отвечают за создание и управление объектами QGesture и отслеживание событий ввода, отправленных в подклассы QWidget и QGraphicsObject. QGestureRecognizer является базовым классом для реализации пользовательских жестов.
Разработчикам, которым требуется только распознавание стандартных жестов, не нужно использовать этот класс напрямую. Экземпляры будут создаваться за кулисами фреймворком.
Обзор обработки жестов в Qt и информация об использовании жестов в ваших приложениях см. в документе Жесты в виджетах и графическом представлении.
Распознавание жестов
Процесс распознавания жестов включает в себя фильтрацию событий ввода, отправленных конкретным объектам, и изменение связанных объектов QGesture для включения соответствующей информации об вводе пользователя.
Жесты создаются, когда фреймворк вызывает создать() для обработки ввода пользователя для конкретного экземпляра подкласса QWidget или QGraphicsObject. Для каждого виджета или элемента, настроенного для использования жестов, создается объект QGesture.
После создания объекта QGesture для целевого объекта, распознаватель жестов получит события для него в функции-обработчике распознать().
При отмене жеста вызывается функция сбросить(), что предоставляет распознавателю возможность обновить соответствующие свойства в соответствующем объекте QGesture.
Поддержка новых жестов
Чтобы добавить поддержку новых жестов, необходимо унаследовать от QGestureRecognizer для создания пользовательского класса распознавателя, создать экземпляр этого класса и зарегистрировать его в приложении, вызвав QGestureRecognizer::registerRecognizer(). Вы также можете унаследовать от QGesture для создания пользовательского класса жеста или положиться на динамические свойства для выражения определённых деталей жеста, который вы хотите обработать.
Ваш пользовательский подкласс QGestureRecognizer должен переопределить функцию распознать() для обработки и фильтрации входящих событий ввода для подклассов QWidget и QGraphicsObject. Хотя логика распознавания жестов реализована в этой функции, вы можете хранить постоянную информацию о состоянии процесса распознавания в объекте QGesture, предоставленном. Функция распознать() должна возвращать значение QGestureRecognizer::Результат, которое указывает состояние распознавания для данного жеста и целевого объекта. Это определяет, будет ли событие жеста передано целевому объекту.
Если вы выберите представление жеста с помощью пользовательского подкласса QGesture, вам нужно будет переопределить функцию создать() для создания экземпляров вашего класса жеста. Аналогично, вам может потребоваться переопределить функцию сбросить(), если вашим пользовательским объектам жеста требуется специальная обработка при отмене жеста.
См. также QGesture.
Документация по типам членов
перечисление QGestureRecognizer::Флаг результата QGestureRecognizer::Результат
Это перечисление описывает результат текущего этапа фильтрации событий в состоянии машины состояний распознавателя жестов.
Результат состоит из значения состояния (одно из Игнорировать, ВозможноЖест, СрабатываетЖест, ЗавершитьЖест, ОтменитьЖест) и необязательного подсказки (ПотреблятьСобытие).
| Постоянная | Значение | Описание |
|---|---|---|
QGestureRecognizer::Ignore |
0x0001 |
Событие не изменяет состояние распознавателя. |
QGestureRecognizer::MayBeGesture |
0x0002 |
Событие изменило внутреннее состояние распознавателя, но пока неясно, является ли оно жестом или нет. Распознавателю необходимо отфильтровать больше событий, чтобы принять решение. Распознаватели жестов в состоянии ВозможноЖест могут быть автоматически сброшены, если им требуется слишком много времени для распознавания жестов. |
QGestureRecognizer::TriggerGesture |
0x0004 |
Жест был сработан, и соответствующий объект QGesture будет передан целевому объекту в составе события QGestureEvent. |
QGestureRecognizer::FinishGesture |
0x0008 |
Жест был успешно завершен, и соответствующий объект QGesture будет передан целевому объекту в составе события QGestureEvent. |
QGestureRecognizer::CancelGesture |
0x0010 |
Событие показало, что это не жест. Если распознаватель жестов был в состоянии СрабатываетЖест до этого, то жест отменяется, и соответствующий объект QGesture будет передан целевому объекту в составе события QGestureEvent. |
QGestureRecognizer::ConsumeEventHint |
0x0100 |
Эта подсказка указывает, что фреймворк жестов должен потреблять отфильтрованное событие и не передавать его получателю. |
Тип Результат — это typedef для QFlags<Флаг результата>. Он хранит объединение по оператору ИЛИ значений Флаг результата.
См. также QGestureRecognizer::распознать().
Документация по функциям-членам
QGestureRecognizer::QGestureRecognizer()
Конструирует новый объект распознавателя жестов.
[virtual] QGestureRecognizer::~QGestureRecognizer()
Уничтожает распознаватель жестов.
[virtual] QGesture *QGestureRecognizer::создать(QObject *target)
Эта функция вызывается Qt для создания нового объекта QGesture для данного target (QWidget или QGraphicsObject).
Переопределите эту функцию для создания пользовательского объекта жеста, производного от QGesture, если это необходимо.
Приложению передается владение созданным объектом жеста.
[pure virtual] QGestureRecognizer::Результат QGestureRecognizer::распознать(QGesture *gesture, QObject *watched, QEvent *event)
Обрабатывает данное event для watched объекта, обновляет состояние объекта gesture по мере необходимости и возвращает соответствующий результат для текущего шага распознавания.
Эта функция вызывается фреймворком, чтобы позволить распознавателю отфильтровать события ввода, отправленные в объекты QWidget или QGraphicsObject, которые он отслеживает.
Результат отражает то, насколько жест был распознан. Состояние объекта gesture устанавливается в зависимости от результата.
См. также QGestureRecognizer::Результат.
[static] Qt::GestureType QGestureRecognizer::registerRecognizer(QGestureRecognizer *recognizer)
Регистрирует указанный recognizer в рамках обработки жестов и возвращает идентификатор жеста для него.
Приложение получает во владение recognizer и возвращает идентификатор типа жеста, связанный с ним. Для распознавателей жестов, которые обрабатывают пользовательские объекты QGesture (то есть те, которые возвращают Qt::CustomGesture в функции QGesture::gestureType()), возвращаемое значение — сгенерированный идентификатор жеста со установленным флагом Qt::CustomGesture.
См. также unregisterRecognizer(), QGestureRecognizer::create(), и QGesture.
[virtual] void QGestureRecognizer::reset(QGesture *gesture)
Эта функция вызывается фреймворком для сброса заданного gesture.
Переопределите эту функцию, чтобы реализовать дополнительные требования к пользовательским объектам QGesture. Это может потребоваться, если вы реализуете пользовательский объект QGesture, свойства которого требуют специальной обработки при сбросе жеста.
[static] void QGestureRecognizer::unregisterRecognizer(Qt::GestureType type)
Отменяет регистрацию всех распознавателей жестов указанного типа type.
См. также registerRecognizer().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qgesturerecognizer.html