PySide6.QtWidgets.QGestureRecognizer

class QGestureRecognizer

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

在版本4.6中添加。

概要

方法

虚拟方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

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

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

有关Qt中手势处理的概述以及如何在您的应用程序中使用手势的信息,请参阅Gestures in Widgets and 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)
Parameters:

目标QObject

Return type:

QGesture

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

重新实现此函数以在必要时创建自定义的QGesture派生手势对象。

应用程序拥有所创建的手势对象的所有权。

abstract recognize(state, watched, event)
Parameters:
Return type:

ResultFlag的组合

处理给定eventwatched对象,根据需要更新gesture对象的状态,并返回当前识别步骤的适当结果。

此函数由框架调用,以允许识别器过滤分发到其正在监视的QWidgetQGraphicsObject实例的输入事件。

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

另请参阅

结果

static registerRecognizer(recognizer)
Parameters:

识别器QGestureRecognizer

Return type:

GestureType

在手势框架中注册给定的recognizer并为其返回一个手势ID。

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

reset(state)
Parameters:

状态QGesture

此函数由框架调用以重置给定的gesture

重新实现此函数以实现对自定义QGesture对象的附加要求。如果您实现了一个自定义QGesture,并且其属性在手势重置时需要特殊处理,则可能需要这样做。

static unregisterRecognizer(type)
Parameters:

类型GestureType

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

另请参阅

registerRecognizer()