Класс QGestureRecognizer
Класс QGestureRecognizer предоставляет инфраструктуру для распознавания жестов. Подробнее...
| Заголовок: | #include <QGestureRecognizer> |
| qmake: | QT += widgets |
| С момента: | Qt 4.6 |
Открытые типы
| флаги | Результат |
| перечисление | ФлагРезультата { Игнорировать, ВозможноЖест, СрабатываетЖест, ЗакончитьЖест, ОтменитьЖест, ПотреблятьСобытие } |
Открытые функции
| QGestureRecognizer() | |
| виртуальный | ~QGestureRecognizer() |
| виртуальный QGesture * | создать(QObject *цель) |
| виртуальный Результат | распознать(QGesture *жест, QObject *наблюдаемый, QEvent *событие) = 0 |
| виртуальный void | сбросить(QGesture *жест) |
Статические открытые члены
| Qt::GestureType | зарегистрироватьРаспознаватель(QGestureRecognizer *распознаватель) |
| void | отменитьРегистрациюРаспознавателя(Qt::GestureType тип) |
Подробное описание
Класс QGestureRecognizer предоставляет инфраструктуру для распознавания жестов.
Распознаватели жестов отвечают за создание и управление объектами QGesture и отслеживание событий ввода, отправляемых в подклассы QWidget и QGraphicsObject. QGestureRecognizer является базовым классом для реализации пользовательских жестов.
Разработчикам, которым требуется только распознавание стандартных жестов, не нужно использовать этот класс напрямую. Экземпляры будут создаваться за кулисами фреймворком.
Обзор обработки жестов в Qt и информацию об использовании жестов в ваших приложениях см. в документе Жесты в виджетах и графическом представлении.
Распознавание жестов
Процесс распознавания жестов включает фильтрацию событий ввода, отправляемых в конкретные объекты, и изменение связанных объектов QGesture для включения релевантной информации о вводе пользователя.
Жесты создаются, когда фреймворк вызывает create() для обработки ввода пользователя для конкретного экземпляра QWidget или подкласса QGraphicsObject. Для каждого виджета или элемента, настроенного на использование жестов, создается объект QGesture.
После создания объекта QGesture для целевого объекта, распознаватель жестов получит события для него в обработчике функции recognize().
При отмене жеста вызывается функция reset(), предоставляя распознавателю возможность обновить соответствующие свойства в соответствующем объекте QGesture.
Поддержка новых жестов
Для добавления поддержки новых жестов необходимо унаследовать от QGestureRecognizer для создания пользовательского класса распознавателя, создать экземпляр этого класса и зарегистрировать его в приложении, вызвав QGestureRecognizer::registerRecognizer(). Также можно унаследовать от QGesture для создания пользовательского класса жеста или использовать динамические свойства для выражения определенных деталей жеста, который вы хотите обработать.
Пользовательский подкласс QGestureRecognizer должен переопределить функцию recognize() для обработки и фильтрации входящих событий ввода для подклассов QWidget и QGraphicsObject. Хотя логика распознавания жестов реализована в этой функции, вы можете хранить постоянную информацию о состоянии процесса распознавания в объекте QGesture, который предоставляется. Функция recognize() должна возвращать значение QGestureRecognizer::Result, которое указывает состояние распознавания для данного жеста и целевого объекта. Это определяет, будет ли событие жеста передано целевому объекту.
Если вы решите представить жест с помощью пользовательского подкласса QGesture, вам потребуется переопределить функцию create() для создания экземпляров вашего класса жеста. Аналогично, вам может потребоваться переопределить функцию reset(), если ваши пользовательские объекты жестов нуждаются в специальной обработке при отмене жеста.
См. также 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 |
Эта подсказка указывает, что фреймворк жестов должен обработать отфильтрованное событие и не передавать его получателю. |
Тип Результат является типом-синонимом для QFlags<ФлагРезультата>. Он хранит результат объединения значений ФлагРезультата.
См. также QGestureRecognizer::recognize().
Документация по функциям членов
QGestureRecognizer::QGestureRecognizer()
Конструктор нового объекта распознавателя жестов.
[virtual] QGestureRecognizer::~QGestureRecognizer()
Удаляет распознаватель жестов.
[virtual] QGesture *QGestureRecognizer::создать(QObject *цель)
Эта функция вызывается Qt для создания нового объекта QGesture для заданной цели (QWidget или QGraphicsObject).
Переопределите эту функцию, чтобы создать пользовательский объект жеста, производный от QGesture, если необходимо.
Приложение получает право собственности на созданный объект жеста.
[pure virtual] QGestureRecognizer::Результат QGestureRecognizer::распознать(QGesture *жест, QObject *наблюдаемый, QEvent *событие)
Обрабатывает заданное событие для наблюдаемого объекта, обновляя состояние объекта жест, как требуется, и возвращает подходящий результат для текущего шага распознавания.
Эта функция вызывается фреймворком, чтобы позволить распознавателю отфильтровать события ввода, отправленные в QWidget или QGraphicsObject экземпляры, за которыми он следит.
Результат отражает, насколько жест был распознан. Состояние объекта жест устанавливается в зависимости от результата.
См. также 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/qt-5.12/qgesturerecognizer.html