class QGestureRecognizer#

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

自版本 4.6 以来。

概述#

方法#

虚方法#

静态函数#

注意

本文档可能包含从C++自动翻译成Python的片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE

详细描述#

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

仅需要为标准手势提供手势识别的开发人员无需直接使用此类。实例将在后台由框架创建。

有关Qt中手势处理概述和信息以及如何在应用程序中使用手势,请参阅Widgets和Graphics View中的手势文档。

识别手势#

手势识别的过程涉及过滤发送到特定对象的输入事件,并修改相关的QGesture对象以包含关于用户输入的相关信息。

当框架调用create()以处理某个QWidgetQGraphicsObject子类的实例的用户输入时,将创建手势。为每个配置为使用手势的控件或项创建一个QGesture对象。

一旦为目标对象创建了QGesture对象,手势识别器将在其recognize()处理函数中接收它的事件。

当手势被取消时,将调用reset()函数,给识别器一个机会更新相应的QGesture对象中适当属性。

支持新手势#

为了支持新的手势,您需要从QGestureRecognizer继承以创建一个自定义识别器类,实例化该类,并通过调用registerRecognizer()将其注册到应用程序。您还可以通过继承QGesture来自定义手势类,或依赖于动态属性来表达您要处理的手势的特定细节。

您的自定义QGestureRecognizer子类需要重写recognize()函数,以处理和过滤传递给QWidgetQGraphicsObject子类的输入事件。尽管手势识别的逻辑实现在此函数中,但您可以在提供的QGesture对象中存储识别过程状态的持久信息。recognize()函数必须返回一个表示特定手势和目标对象识别状态的Result值。这决定了手势事件是否将被传送给目标对象。

如果您选择使用自定义QGesture子类来表示手势,则需要重写create()函数以创建手势类的实例。同样,如果您的自定义手势对象需要在手势取消时特别处理,则可能需要重写reset()函数。

另请参阅

QGesture

class ResultFlag#

(继承自 enum.Flag) 此枚举描述了手势识别状态机当前事件过滤步骤的结果。

结果包括一个状态值(Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture中的一个)和一个可选的提示(ConsumeEventHint)。

常量

说明

QGestureRecognizer.Ignore

事件不会改变识别器的状态。

QGestureRecognizer.MayBeGesture

事件改变了识别器的内部状态,但尚不清楚它是否是手势。识别器需要进一步过滤事件以做出决定。处于MayBeGesture状态的识别器如果识别手势花费时间过长可能会自动重置。

QGestureRecognizer.TriggerGesture

手势已被触发,适当的QGesture对象将作为QGestureEvent的一部分传递给目标。

QGestureRecognizer.FinishGesture

手势已成功完成,适当的QGesture对象将作为QGestureEvent的一部分传递给目标。

QGestureRecognizer.CancelGesture

事件明确表明它不是手势。如果手势识别器在之前处于GestureTriggered状态,则手势将取消,适当的QGesture对象将作为QGestureEvent的一部分传递给目标。

QGestureRecognizer.ConsumeEventHint

此提示指定手势框架应消耗过滤事件的提示,不将其传递给接收器。

另请参阅

recognize()

__init__()#

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

create(target)#
参数:

targetQObject

返回类型:

QGesture

Qt调用此函数以为给定的targetQWidgetQGraphicsObject)创建一个新QGesture对象。

根据需要实现此函数以创建自定义的QGesture派生手势对象。

应用程序将获得创建的手势对象的拥有权。

abstract recognize(state, watched, event)#
参数:
返回类型:

组合 ResultFlag

处理给定的事件以用于 watched 对象,并根据需要更新 gesture 对象的状态,并为当前识别步骤返回适当的结果。

此函数由框架调用,以允许识别器过滤传递给它监视的 QWidgetQGraphicsObject 实例的输入事件。

结果反映了对手势识别的程度。根据结果设置 gesture 对象的状态。

另请参阅

结果

static registerRecognizer(recognizer)#
参数:

recognizerQGestureRecognizer

返回类型:

手势类型

将给定的 recognizer 注册到手势框架,并返回相应的手势 ID。

应用程序将拥有 recognizer 的所有权,并返回与它关联的手势类型 ID。对于处理自定义 QGesture 对象的手势识别器(即在 gestureType() 函数中返回 Qt::CustomGesture 的识别器),返回值是一个设置了 Qt::CustomGesture 标志的生成手势 ID。

reset(state)#
参数:

stateQGesture

框架调用此函数以重置给定的事件。

重新实现此函数以实现对自定义 QGesture 对象的额外要求。如果您实现了一个具有特定属性需要特殊处理的重置时,这可能是有必要的。

static unregisterRecognizer(type)#
参数:

typeGestureType

注销指定 type 的所有手势识别器。

另请参阅

registerRecognizer()