Spec-Zone.ru › Qt 5.9

Класс QGestureRecognizer

Класс QGestureRecognizer предоставляет инфраструктуру для распознавания жестов. Подробнее...

Заголовок: #include <QGestureRecognizer>
qmake: QT += widgets
С момента: Qt 4.6
  • Список всех членов, включая унаследованные

Типы

флаги Результат
перечисление ФлагРезультата { Игнорировать, ВозможноЖест, СработалЖест, ЗаконченЖест, ОтмененЖест, ПотреблятьСобытие }

Открытые функции

QGestureRecognizer()
виртуальный ~QGestureRecognizer()
виртуальный QGesture * create(QObject *target)
виртуальный Результат recognize(QGesture *gesture, QObject *watched, QEvent *event) = 0
виртуальный void reset(QGesture *gesture)

Статические открытые члены

Qt::GestureType registerRecognizer(QGestureRecognizer *recognizer)
void unregisterRecognizer(Qt::GestureType type)

Подробное описание

Класс QGestureRecognizer предоставляет инфраструктуру для распознавания жестов.

Распознаватели жестов отвечают за создание и управление объектами QGesture и мониторинг событий ввода, отправленных подклассам QWidget и QGraphicsObject. QGestureRecognizer — базовый класс для реализации пользовательских жестов.

Разработчикам, которым нужно только предоставить распознавание жестов для стандартных жестов, не нужно использовать этот класс напрямую. Экземпляры будут создаваться за кулисами фреймворком.

Обзор обработки жестов в Qt и информация об использовании жестов в приложениях см. в документе Жесты в виджетах и графическом представлении.

Распознавание жестов

Процесс распознавания жестов включает фильтрацию событий ввода, отправленных определенным объектам, и изменение связанных объектов QGesture для включения соответствующей информации о вводе пользователя.

Жесты создаются, когда фреймворк вызывает create(), чтобы обработать ввод пользователя для конкретного экземпляра QWidget или QGraphicsObject.

После создания объекта 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 Эта подсказка указывает, что фреймворк жестов должен потреблять отфильтрованное событие и не передавать его получателю.

Тип Результат является typedef для QFlags<ФлагРезультата>. Он хранит логическое ИЛИ сочетание значений ФлагРезультата.

См. также QGestureRecognizer::recognize().

Документация по функциям членов

QGestureRecognizer::QGestureRecognizer()

Конструирует новый объект распознавателя жестов.

[virtual] QGestureRecognizer::~QGestureRecognizer()

Уничтожает распознаватель жестов.

[virtual] QGesture *QGestureRecognizer::create(QObject *target)

Эта функция вызывается Qt для создания нового объекта QGesture для заданного target (QWidget или QGraphicsObject).

Переопределите эту функцию для создания пользовательского объекта жеста, производного от QGesture, при необходимости.

Приложение берет на себя владение созданным объектом жеста.

[pure virtual] Результат 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-5.9/qgesturerecognizer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API