- 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中手势处理概述和信息以及如何在应用程序中使用手势,请参阅Widgets和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)#
- 参数:
- 返回类型:
组合
ResultFlag
处理给定的事件以用于
watched
对象,并根据需要更新gesture
对象的状态,并为当前识别步骤返回适当的结果。此函数由框架调用,以允许识别器过滤传递给它监视的
QWidget
或QGraphicsObject
实例的输入事件。结果反映了对手势识别的程度。根据结果设置
gesture
对象的状态。另请参阅
结果
- static registerRecognizer(recognizer)#
- 参数:
recognizer –
QGestureRecognizer
- 返回类型:
将给定的
recognizer
注册到手势框架,并返回相应的手势 ID。应用程序将拥有
recognizer
的所有权,并返回与它关联的手势类型 ID。对于处理自定义QGesture
对象的手势识别器(即在gestureType()
函数中返回 Qt::CustomGesture 的识别器),返回值是一个设置了 Qt::CustomGesture 标志的生成手势 ID。框架调用此函数以重置给定的事件。
重新实现此函数以实现对自定义
QGesture
对象的额外要求。如果您实现了一个具有特定属性需要特殊处理的重置时,这可能是有必要的。- static unregisterRecognizer(type)#
- 参数:
type –
GestureType
注销指定
type
的所有手势识别器。另请参阅