Класс QGestureRecognizer
Класс QGestureRecognizer предоставляет инфраструктуру для распознавания жестов. Подробнее...
| Заголовок: | #include <QGestureRecognizer> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
Типы публичного доступа
| флаги | Результат |
| перечисление | Флаг результата { Пропустить, ВозможноЖест, СпуститьЖест, ЗакончитьЖест, ОтменитьЖест, ПотреблятьСобытие } |
Функции публичного доступа
| QGestureRecognizer() | |
| virtual | ~QGestureRecognizer() |
| virtual QGesture * | create(QObject *target) |
| virtual QGestureRecognizer::Результат | recognize(QGesture *gesture, QObject *watched, QEvent *event) = 0 |
| virtual void | reset(QGesture *gesture) |
Статические публичные члены
| Qt::GestureType | registerRecognizer(QGestureRecognizer *recognizer) |
| void | unregisterRecognizer(Qt::GestureType type) |
Подробное описание
Распознаватели жестов отвечают за создание и управление объектами 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::Результат, которое указывает состояние распознавания для заданного жеста и целевого объекта. Это определяет, будет ли событие жеста доставлено целевому объекту.
Если вы выберете представление жеста с помощью пользовательского подкласса 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::create(QObject *target)
Эта функция вызывается Qt для создания нового объекта QGesture для заданного target (QWidget или QGraphicsObject).
Переопределите эту функцию, чтобы создать пользовательский объект жеста, производный от QGesture, если это необходимо.
Приложение берет на себя владение созданным объектом жеста.
[pure virtual] QGestureRecognizer::Результат QGestureRecognizer::recognize(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/qt-6.2/qgesturerecognizer.html