QGestureRecognizer 类

QGestureRecognizer 类提供用于手势识别的基础设施。 更多...

头: #include <QGestureRecognizer>
qmake: QT += widgets
Since: Qt 4.6

公共类型

flags 结果
enum ResultFlag { Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture, ConsumeEventHint }

公共函数

QGestureRecognizer ()
virtual ~QGestureRecognizer ()
virtual QGesture * create (QObject * target )
virtual Result recognize (QGesture * gesture , QObject * watched , QEvent * event ) = 0
virtual void reset (QGesture * gesture )

静态公共成员

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

详细描述

QGestureRecognizer 类提供用于手势识别的基础设施。

手势识别器负责创建和管理 QGesture 对象和监视的输入事件会被发送给 QWidget and QGraphicsObject 子类。 QGestureRecognizer 是实现自定义手势的基类。

只需要为标准手势提供手势识别的开发者不需要直接使用这个类。将由框架在幕后创建实例。

对于 Qt 中手势处理的概述和在应用程序中使用手势的信息,见 在 Widget 和图形视图中的手势 文档。

识别手势

The process of recognizing gestures involves filtering input events sent to specific objects, and modifying the associated QGesture objects to include relevant information about the user's input.

Gestures are created when the framework calls create () to handle user input for a particular instance of a QWidget or QGraphicsObject subclass. A QGesture object is created for each widget or item that is configured to use gestures.

一旦 QGesture has been created for a target object, the gesture recognizer will receive events for it in its recognize () handler function.

When a gesture is canceled, the reset () function is called, giving the recognizer the chance to update the appropriate properties in the corresponding QGesture 对象。

支持新的手势

To add support for new gestures, you need to derive from QGestureRecognizer to create a custom recognizer class, construct an instance of this class, and register it with the application by calling QGestureRecognizer::registerRecognizer (). You can also subclass QGesture to create a custom gesture class, or rely on dynamic properties to express specific details of the gesture you want to handle.

Your custom QGestureRecognizer subclass needs to reimplement the recognize () function to handle and filter the incoming input events for QWidget and QGraphicsObject subclasses. Although the logic for gesture recognition is implemented in this function, you can store persistent information about the state of the recognition process in the QGesture object supplied. The recognize () function must return a value of QGestureRecognizer::Result that indicates the state of recognition for a given gesture and target object. This determines whether or not a gesture event will be delivered to a target object.

If you choose to represent a gesture by a custom QGesture subclass, you will need to reimplement the create () function to construct instances of your gesture class. Similarly, you may need to reimplement the reset () function if your custom gesture objects need to be specially handled when a gesture is canceled.

另请参阅 QGesture .

成员类型文档编制

enum QGestureRecognizer:: ResultFlag
flags QGestureRecognizer:: 结果

This enum describes the result of the current event filtering step in a gesture recognizer state machine.

The result consists of a state value (one of Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture) and an optional hint (ConsumeEventHint).

常量 描述
QGestureRecognizer::Ignore 0x0001 The event does not change the state of the recognizer.
QGestureRecognizer::MayBeGesture 0x0002 The event changed the internal state of the recognizer, but it isn't clear yet if it is a gesture or not. The recognizer needs to filter more events to decide. Gesture recognizers in the MayBeGesture state may be reset automatically if they take too long to recognize gestures.
QGestureRecognizer::TriggerGesture 0x0004 The gesture has been triggered and the appropriate QGesture object will be delivered to the target as a part of a QGestureEvent .
QGestureRecognizer::FinishGesture 0x0008 The gesture has been finished successfully and the appropriate QGesture object will be delivered to the target as a part of a QGestureEvent .
QGestureRecognizer::CancelGesture 0x0010 The event made it clear that it is not a gesture. If the gesture recognizer was in GestureTriggered state before, then the gesture is canceled and the appropriate QGesture object will be delivered to the target as a part of a QGestureEvent .
QGestureRecognizer::ConsumeEventHint 0x0100 This hint specifies that the gesture framework should consume the filtered event and not deliver it to the receiver.

The Result type is a typedef for QFlags <ResultFlag>. It stores an OR combination of ResultFlag values.

另请参阅 QGestureRecognizer::recognize ().

成员函数文档编制

QGestureRecognizer:: QGestureRecognizer ()

构造新的手势识别器对象。

[virtual] QGestureRecognizer:: ~QGestureRecognizer ()

销毁手势识别器。

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

This function is called by Qt to create a new QGesture object for the given target ( QWidget or QGraphicsObject ).

Reimplement this function to create a custom QGesture -derived gesture object if necessary.

The application takes ownership of the created gesture object.

[pure virtual] 结果 QGestureRecognizer:: recognize ( QGesture * gesture , QObject * watched , QEvent * event )

Handles the given event watched object, updating the state of the gesture object as required, and returns a suitable result for the current recognition step.

This function is called by the framework to allow the recognizer to filter input events dispatched to QWidget or QGraphicsObject instances that it is monitoring.

The result reflects how much of the gesture has been recognized. The state of the gesture object is set depending on the result.

另请参阅 QGestureRecognizer::Result .

[static] Qt::GestureType QGestureRecognizer:: registerRecognizer ( QGestureRecognizer * recognizer )

Registers the given recognizer in the gesture framework and returns a gesture ID for it.

The application takes ownership of the recognizer and returns the gesture type ID associated with it. For gesture recognizers which handle custom QGesture objects (i.e., those which return Qt::CustomGesture QGesture::gestureType () function) the return value is a generated gesture ID with the Qt::CustomGesture flag set.

另请参阅 unregisterRecognizer (), QGestureRecognizer::create (),和 QGesture .

[virtual] void QGestureRecognizer:: reset ( QGesture * gesture )

This function is called by the framework to reset a given gesture .

Reimplement this function to implement additional requirements for custom QGesture objects. This may be necessary if you implement a custom QGesture whose properties need special handling when the gesture is reset.

[static] void QGestureRecognizer:: unregisterRecognizer ( Qt::GestureType type )

Unregisters all gesture recognizers of the specified type .

另请参阅 registerRecognizer ().