Класс QGestureRecognizer
Класс QGestureRecognizer предоставляет инфраструктуру для распознавания жестов. Подробнее...
| Заголовок: | #include <QGestureRecognizer> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
Открытые типы
| флаги | Результат |
| перечисление | ФлагРезультата { Игнорировать, ВозможноЖест, СработалЖест, ЗакончитьЖест, ОтменитьЖест, ПотреблятьСобытие } |
Открытые функции
| QGestureRecognizer() | |
| виртуальный | ~QGestureRecognizer() |
| виртуальный QGesture * | создать(QObject *цель) |
| виртуальный Результат | распознать(QGesture *жест, QObject *отслеживаемый, QEvent *событие) = 0 |
| виртуальный void | сбросить(QGesture *жест) |
Статические открытые члены
| Qt::GestureType | зарегистрироватьРаспознаватель(QGestureRecognizer *распознаватель) |
| void | отменитьРегистрациюРаспознавателя(Qt::GestureType тип) |
Подробное описание
Распознаватели жестов отвечают за создание и управление объектами 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 *цель)
Эта функция вызывается 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-6.1/qgesturerecognizer.html