PySide6.QtCore.QVariantAnimation

class QVariantAnimation

QVariantAnimation 类为动画提供了一个基类。更多

PySide6.QtCore.QVariantAnimation 的继承图

继承者: QPropertyAnimation

在版本4.6中添加。

概要

属性

方法

虚拟方法

信号

注意

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

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

此类是动画框架的一部分。它作为属性和项目动画的基类,具有共享功能的功能。

该类对QVariant进行插值,但将使用插值值的工作留给其子类。目前,Qt提供了QPropertyAnimation,它可以动画化Qt的属性。如果你想动画化这些属性,请参阅QPropertyAnimation类的描述。

然后,您可以通过调用setStartValue()setEndValue()来设置属性的起始值和结束值,最后调用start()来启动动画。QVariantAnimation将插值目标对象的属性并发出valueChanged()。要响应当前值的变化,您必须重新实现updateCurrentValue()虚函数或连接到所述信号。

也可以在开始值和结束值之间的指定步骤中设置值。插值将在指定的步骤中触及这些点。请注意,开始值和结束值被定义为0.0和1.0处的关键值。

有两种方法可以影响QVariantAnimation如何插值。你可以通过调用setEasingCurve()来设置缓动曲线,并通过调用setDuration()来配置持续时间。你可以通过创建QVariantAnimation的子类并重新实现虚拟interpolated()函数来改变QVariant的插值方式。

如果你有不想声明为Qt属性的QVariant,子类化QVariantAnimation可能是一个替代方案。但请注意,在大多数情况下,将你的QVariant声明为属性会更好。

并非所有QVariant类型都受支持。以下是当前支持的QVariant类型列表:

如果你需要插值其他变体类型,包括自定义类型,你必须自己实现这些类型的插值。为此,你可以为给定类型注册一个插值函数。这个函数接受3个参数:起始值、结束值和当前进度。

示例:

def myColorInterpolator(start,end,progress):

    ...
    return QColor(...)

...
qRegisterAnimationInterpolator<QColor>(myColorInterpolator)

另一个选择是重新实现interpolated(),它返回被插值的值的插值。

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property currentValueᅟ: object

此属性保存动画的当前值。

此属性描述了当前值;它是介于起始值结束值之间的插值,使用当前时间来表示进度。该值本身是从interpolated()中获取的,该函数在动画运行时被重复调用。

QVariantAnimation 在当前值发生变化时调用虚拟函数 updateCurrentValue()。这对于需要跟踪更新的子类特别有用。例如,QPropertyAnimation 使用此函数来动画化 Qt properties

另请参阅

startValue endValue

Access functions:
property durationᅟ: int

此属性保存动画的持续时间。

此属性描述了动画的持续时间,单位为毫秒。默认持续时间为250毫秒。

另请参阅

duration()

Access functions:
property easingCurveᅟ: QEasingCurve

此属性保存动画的缓动曲线。

此属性定义了动画的缓动曲线。默认情况下,使用线性缓动曲线,导致线性插值。提供了其他曲线,例如,InCirc,它提供了一个圆形进入曲线。另一个例子是InOutElastic,它在插值变体的值上提供了弹性效果。

QVariantAnimation 将使用 valueForProgress() 将动画的“标准化进度”(currentTime / totalDuration)转换为动画实际使用的有效进度。当调用 interpolated() 时,这个有效进度将成为进度。此外,keyValues 中的步骤也是指这个有效进度。

缓动曲线与插值器、interpolated() 虚函数以及动画的持续时间一起使用,以控制当前值在动画进行过程中如何变化。

Access functions:
property endValueᅟ: object

此属性保存动画的结束值。

此属性描述了动画的结束值。

另请参阅

startValue

Access functions:
property startValueᅟ: object

此属性保存动画的可选起始值。

此属性描述了动画的可选起始值。如果省略,或者如果分配了一个空的QVariant作为起始值,动画将在开始时使用结束时的当前位置。

另请参阅

endValue

Access functions:
__init__([parent=None])
Parameters:

父对象QObject

构造一个QVariantAnimation对象。parent被传递给QAbstractAnimation的构造函数。

currentValue()
Return type:

对象

属性 currentValueᅟ 的获取器。

easingCurve()
Return type:

QEasingCurve

另请参阅

setEasingCurve()

属性 easingCurveᅟ 的获取器。

endValue()
Return type:

对象

另请参阅

setEndValue()

属性 endValueᅟ 的获取器。

interpolated(from, to, progress)
Parameters:
  • from – 对象

  • to – 对象

  • progress – 浮点数

Return type:

对象

此虚函数返回在fromto之间的线性插值,在progress处,通常是一个介于0和1之间的值。您可以在QVariantAnimation的子类中重新实现此函数,以提供您自己的插值算法。

请注意,为了使插值能够与返回小于0或大于1的值的QEasingCurve(例如InBack)一起工作,您应确保它能够进行外推。如果数据类型的语义不允许外推,此函数应优雅地处理这种情况。

如果您希望您的类处理Qt已经支持的类型(有关支持类型的列表,请参见类QVariantAnimation的描述),您应该调用此函数的QVariantAnimation实现。

另请参阅

QEasingCurve

keyValueAt(step)
Parameters:

步长 – 浮点数

Return type:

对象

返回给定step的关键帧值。给定的step必须在0到1的范围内。如果没有KeyValue对应step,则返回一个无效的QVariant

keyValues()
Return type:

.std.pairdouble, QVariant 的列表

返回此动画的关键帧。

setDuration(msecs)
Parameters:

msecs – 整数

另请参阅

duration()

属性 durationᅟ 的设置器。

setEasingCurve(easing)
Parameters:

easingQEasingCurve

另请参阅

easingCurve()

属性 easingCurveᅟ 的设置器。

setEndValue(value)
Parameters:

– 对象

另请参阅

endValue()

属性 endValueᅟ 的设置器。

setKeyValueAt(step, value)
Parameters:
  • step – 浮点数

  • value – 对象

在给定的step处创建一个关键帧,并赋予给定的value。给定的step必须在0到1的范围内。

setKeyValues(values)
Parameters:

values – .std.pairdouble,QVariant 的列表

用给定的keyValues替换当前的键帧集。键帧的步长必须在0到1的范围内。

另请参阅

keyValues() keyValueAt()

setStartValue(value)
Parameters:

– 对象

另请参阅

startValue()

属性 startValueᅟ 的设置器。

startValue()
Return type:

对象

另请参阅

setStartValue()

属性 startValueᅟ 的获取器。

updateCurrentValue(value)
Parameters:

– 对象

每次动画的当前值发生变化时,都会调用此虚拟函数。value参数是新的当前值。

基类实现不执行任何操作。

另请参阅

currentValue

valueChanged(value)
Parameters:

– 对象

QVariantAnimation 每当当前的 value 发生变化时,都会发出此信号。

属性 currentValueᅟ 的通知信号。