Класс QGestureRecognizer
Класс QGestureRecognizer предоставляет инфраструктуру для распознавания жестов. Подробнее...
| Заголовок: | #include <QGestureRecognizer> |
| qmake: | QT += widgets |
| С момента: | Qt 4.6 |
Этот класс был представлен в Qt 4.6.
Типы публичного доступа
| флаги | Результат |
| перечисление | ФлагРезультата { Игнорировать, ВозможноЖест, ЗапускатьЖест, ЗавершитьЖест, ОтменитьЖест, ПотреблятьСобытие } |
Публичные функции
| QGestureRecognizer() | |
| virtual | ~QGestureRecognizer() |
| virtual QGesture * | создать(QObject *цель) |
| virtual QGestureRecognizer::Результат | распознать(QGesture *жест, QObject *отслеживаемый, QEvent *событие) = 0 |
| virtual void | сбросить(QGesture *жест) |
Статические публичные члены
| Qt::GestureType | зарегистрироватьРаспознаватель(QGestureRecognizer *распознаватель) |
| void | отменитьРегистрациюРаспознавателя(Qt::GestureType тип) |
Подробное описание
Распознаватели жестов отвечают за создание и управление объектами QGesture и отслеживание событий ввода, отправленных в подклассы QWidget и QGraphicsObject. QGestureRecognizer — базовый класс для реализации пользовательских жестов.
Разработчикам, которым нужно только предоставить распознавание жестов для стандартных жестов, не нужно использовать этот класс напрямую. Экземпляры будут создаваться за кулисами фреймворком.
Обзор обработки жестов в Qt и информация об использовании жестов в приложениях см. в документе Gestures in Widgets and Graphics View.
Распознавание жестов
Процесс распознавания жестов включает в себя фильтрацию событий ввода, отправленных в определенные объекты, и изменение связанных объектов 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 |
Этот признак указывает, что фреймворк жестов должен потреблять отфильтрованное событие и не передавать его получателю. |
Тип Результат — это псевдоним для QFlags<ФлагРезультата>. Он хранит логическое ИЛИ комбинацию значений ФлагРезультата.
См. также QGestureRecognizer::распознать().
Документация по функциям членов
QGestureRecognizer::QGestureRecognizer()
Создает новый объект распознавателя жестов.
QGestureRecognizer::~QGestureRecognizer()
Удаляет распознаватель жестов.
QGestureRecognizer::создать(QObject *target)
Эта функция вызывается Qt для создания нового объекта QGesture для данной цели (QWidget или QGraphicsObject).
Переопределите эту функцию для создания пользовательского объекта жеста, производного от QGesture, если это необходимо.
Приложение получает во владение созданный объект жеста.
QGestureRecognizer::распознать(QGesture *gesture, QObject *watched, QEvent *event)
Обрабатывает данное событие для объекта отслеживаемый, обновляет состояние объекта жест по мере необходимости и возвращает подходящий результат для текущего шага распознавания.
Эта функция вызывается фреймворком, чтобы позволить распознавателю фильтровать события ввода, отправленные подклассам 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.13/qgesturerecognizer.html