PySide6.QtWidgets.QGestureRecognizer¶
- class QGestureRecognizer¶
QGestureRecognizer类提供了手势识别的基础设施。更多…在版本4.6中添加。
概要¶
方法¶
def
__init__()
虚拟方法¶
def
create()def
recognize()def
reset()
静态函数¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
手势识别器负责创建和管理
QGesture对象,并监控发送到QWidget和QGraphicsObject子类的输入事件。QGestureRecognizer是实现自定义手势的基类。只需要为标准手势提供手势识别的开发者不需要直接使用这个类。实例将由框架在后台创建。
有关Qt中手势处理的概述以及如何在您的应用程序中使用手势的信息,请参阅Gestures in Widgets and Graphics View文档。
识别手势¶
识别手势的过程涉及过滤发送到特定对象的输入事件,并修改相关的
QGesture对象以包含有关用户输入的相关信息。当框架调用
create()来处理QWidget或QGraphicsObject子类的特定实例的用户输入时,手势被创建。为每个配置为使用手势的小部件或项创建一个QGesture对象。一旦为目标对象创建了
QGesture,手势识别器将在其recognize()处理函数中接收相关事件。当手势被取消时,
reset()函数被调用,使识别器有机会更新相应的QGesture对象中的适当属性。支持新手势¶
要添加对新手势的支持,您需要从
QGestureRecognizer派生以创建一个自定义识别器类,构造此类的实例,并通过调用registerRecognizer()将其注册到应用程序中。您还可以子类化QGesture以创建自定义手势类,或依赖动态属性来表达您要处理的手势的特定细节。您的自定义
QGestureRecognizer子类需要重新实现recognize()函数,以处理和过滤QWidget和QGraphicsObject子类的传入输入事件。尽管手势识别的逻辑在此函数中实现,但您可以在提供的QGesture对象中存储有关识别过程状态的持久信息。recognize()函数必须返回一个Result值,该值指示给定手势和目标对象的识别状态。这决定了手势事件是否将传递给目标对象。如果您选择通过自定义的
QGesture子类来表示手势,您将需要重新实现create()函数以构建您的手势类的实例。同样,如果您的自定义手势对象在手势被取消时需要特殊处理,您可能需要重新实现reset()函数。另请参阅
- 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
此提示指定手势框架应消耗过滤的事件,并不将其传递给接收者。
另请参阅
- __init__()¶
构造一个新的手势识别器对象。
此函数由Qt调用,用于为给定的
target(QWidget或QGraphicsObject)创建一个新的QGesture对象。重新实现此函数以在必要时创建自定义的
QGesture派生手势对象。应用程序拥有所创建的手势对象的所有权。
- abstract recognize(state, watched, event)¶
- Parameters:
- Return type:
ResultFlag的组合
处理给定
event的watched对象,根据需要更新gesture对象的状态,并返回当前识别步骤的适当结果。此函数由框架调用,以允许识别器过滤分发到其正在监视的
QWidget或QGraphicsObject实例的输入事件。结果反映了手势被识别的程度。
gesture对象的状态根据结果进行设置。另请参阅
结果- static registerRecognizer(recognizer)¶
- Parameters:
识别器 –
QGestureRecognizer- Return type:
在手势框架中注册给定的
recognizer并为其返回一个手势ID。应用程序接管
recognizer的所有权,并返回与之关联的手势类型ID。对于处理自定义QGesture对象的手势识别器(即那些在gestureType()函数中返回Qt::CustomGesture的识别器),返回值是一个带有Qt::CustomGesture标志的生成手势ID。此函数由框架调用以重置给定的
gesture。重新实现此函数以实现对自定义
QGesture对象的附加要求。如果您实现了一个自定义QGesture,并且其属性在手势重置时需要特殊处理,则可能需要这样做。- static unregisterRecognizer(type)¶
- Parameters:
类型 –
GestureType
注销指定
type的所有手势识别器。另请参阅