class QVariantAnimation#

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

Inheritance diagram of 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#

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

此属性描述了当前值;在 start valueend value 之间的插值值,使用当前时间作为进度。该值本身由 interpolated() 获取,该函数在动画运行时会被重复调用。

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

另请参阅

startValueendValue

访问函数
属性 durationᅟ int#

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

此属性描述动画的持续时间(毫秒)。默认持续时间是250毫秒。

另请参阅

duration()

访问函数
属性 easingCurveᅟ QEasingCurve#

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

此属性定义动画的缓和曲线。默认情况下,使用线性缓和曲线,从而实现线性插值。还提供了其他曲线,例如,InCirc ,提供圆形起始曲线。另一个例子是 InOutElastic ,它为插值变量的值提供弹性效果。

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

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

访问函数
属性 endValueᅟ object#

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

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

另请参阅

startValue

访问函数
属性 startValueᅟ object#

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

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

另请参阅

endValue

访问函数
__init__([parent=None])#
参数:

parentQObject

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

currentValue()#
返回类型:

对象

currentValue 属性的获取器。

easingCurve()#
返回类型:

QEasingCurve

另请参阅

setEasingCurve()

easingCurve 属性的获取器。

endValue()#
返回类型:

对象

另请参阅

setEndValue()

endValue 属性的获取器。

interpolated(from, to, progress)#
参数:
  • from – 对象

  • to – 对象

  • progress – 浮点数

返回类型:

对象

此虚拟函数返回在 progress 时的变量 fromto 之间的线性行业插值,通常是一个介于 0 和 1 之间的值。您可以在 QVariantAnimation 的子类中重写此函数以提供自己的插值算法。

请注意,为了使插值能够与返回小于 0 或大于 1 的值(如 QEasingCurveInBack )相工作,应确保它可以进行外推。如果数据类型的语义不允许外推,则此函数应该优雅地处理该情况。

如果您想使您的类处理由 Qt 支持的类型(请参阅 QVariantAnimation 类描述以获取支持类型的列表),则应调用此函数的 QVariantAnimation 实现。

另请参阅

QEasingCurve

keyValueAt(step)#
参数:

step – 浮点数

返回类型:

对象

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

keyValues()#
返回类型:

std.pair double,QVariant 的列表

返回此动画的关键帧。

setDuration(msecs)#
参数:

msecs – int

另请参阅

duration()

属性 duration 的设置器。

setEasingCurve(easing)#
参数:

easingQEasingCurve

另请参阅

easingCurve()

属性 easingCurve 的设置器。

setEndValue(value)#
参数:

value – 对象

另请参阅

endValue()

属性 endValue 的设置器。

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

  • value – 对象

在给定的 step 处创建一个具有给定 value 的关键帧。给定的 step 必须在 0 到 1 的范围内。

setKeyValues(values)#
参数:

values – std.pair double,QVariant 的列表

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

另请参阅

keyValues() keyValueAt()

setStartValue(value)#
参数:

value – 对象

另请参阅

startValue()

属性startValue的设置器。

startValue()#
返回类型:

对象

另请参阅

setStartValue()

属性startValue的获取器。

updateCurrentValue(value)#
参数:

value – 对象

每次动画的当前值改变时都会调用这个虚函数。传入的value参数是新当前值。

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

另请参阅

currentValue

valueChanged(value)#
参数:

value – 对象

QVariantAnimation在当前value改变时发出此信号。

属性currentValue的通知信号。