- class QVariantAnimation#
QVariantAnimation
类提供了一个动画的基础类。 更多…继承自:
QPropertyAnimation
新增于版本 4.6。
摘要#
属性#
currentValueᅟ
- 动画的当前值durationᅟ
- 动画的持续时间easingCurveᅟ
- 动画的缓动曲线endValueᅟ
- 动画的结束值startValueᅟ
- 动画的可选起始值
方法#
def
__init__()
定义
endValue()
定义
keyValueAt()
定义
keyValues()
定义
startValue()
虚函数#
信号#
注意
本文档可能包含自动从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 value
和end value
之间的插值值,使用当前时间作为进度。该值本身由interpolated()
获取,该函数在动画运行时会被重复调用。QVariantAnimation
在当前值更改时调用虚拟函数updateCurrentValue()
。这对于需要跟踪更新的子类特别有用。例如,QPropertyAnimation
使用此函数来动画化 Qt 属性。另请参阅
- 访问函数
- 属性 durationᅟ: int#
此属性保存动画的持续时间。
此属性描述动画的持续时间(毫秒)。默认持续时间是250毫秒。
另请参阅
- 访问函数
- 属性 easingCurveᅟ: QEasingCurve#
此属性保存动画的缓和曲线。
此属性定义动画的缓和曲线。默认情况下,使用线性缓和曲线,从而实现线性插值。还提供了其他曲线,例如,
InCirc
,提供圆形起始曲线。另一个例子是InOutElastic
,它为插值变量的值提供弹性效果。QVariantAnimation
将使用valueForProgress()
将动画的“归一化进度”(currentTime / totalDuration)转换为动画实际使用的有效进度。这是当调用interpolated()
时将要用的进度。这也将是调用interpolated()
时动画的进度。此外,keyValues
中的步骤指的是这个有效进度。缓和曲线与插值器、
interpolated()
虚拟函数以及动画的持续时间一起使用,以控制当前值在动画过程中如何变化。- 属性 endValueᅟ: object#
此属性保存动画的结束值。
此属性描述动画的结束值。
另请参阅
- 访问函数
- 属性 startValueᅟ: object#
此属性保存动画的可选起始值。
此属性描述动画的可选起始值。如果省略,或者如果设置了空
QVariant
作为起始值,动画将使用动画开始时结束位置的当前位置。另请参阅
构造一个
QVariantAnimation
对象。parent
传递给QAbstractAnimation
构造函数。- currentValue()#
- 返回类型:
对象
currentValue
属性的获取器。- easingCurve()#
- 返回类型:
另请参阅
easingCurve
属性的获取器。- endValue()#
- 返回类型:
对象
另请参阅
endValue
属性的获取器。- interpolated(from, to, progress)#
- 参数:
from – 对象
to – 对象
progress – 浮点数
- 返回类型:
对象
此虚拟函数返回在
progress
时的变量from
和to
之间的线性行业插值,通常是一个介于 0 和 1 之间的值。您可以在QVariantAnimation
的子类中重写此函数以提供自己的插值算法。请注意,为了使插值能够与返回小于 0 或大于 1 的值(如
QEasingCurve
的InBack
)相工作,应确保它可以进行外推。如果数据类型的语义不允许外推,则此函数应该优雅地处理该情况。如果您想使您的类处理由 Qt 支持的类型(请参阅
QVariantAnimation
类描述以获取支持类型的列表),则应调用此函数的QVariantAnimation
实现。另请参阅
- keyValueAt(step)#
- 参数:
step – 浮点数
- 返回类型:
对象
根据给定的
step
返回关键帧值。给定的step
必须在 0 到 1 的范围内。如果没有与step
对应的 KeyValue,则返回无效的QVariant
。- keyValues()#
- 返回类型:
std.pair double,QVariant 的列表
返回此动画的关键帧。
- setDuration(msecs)#
- 参数:
msecs – int
另请参阅
duration()
属性
duration
的设置器。- setEasingCurve(easing)#
- 参数:
easing –
QEasingCurve
另请参阅
属性
easingCurve
的设置器。- setEndValue(value)#
- 参数:
value – 对象
另请参阅
属性
endValue
的设置器。- setKeyValueAt(step, value)#
- 参数:
step – 浮点数
value – 对象
在给定的
step
处创建一个具有给定value
的关键帧。给定的step
必须在 0 到 1 的范围内。- setKeyValues(values)#
- 参数:
values – std.pair double,QVariant 的列表
用给定的
keyValues
替换当前的关键帧集合。关键帧的步长必须在 0 到 1 的范围内。另请参阅
- setStartValue(value)#
- 参数:
value – 对象
另请参阅
属性startValue的设置器。
- startValue()#
- 返回类型:
对象
另请参阅
属性startValue的获取器。
- updateCurrentValue(value)#
- 参数:
value – 对象
每次动画的当前值改变时都会调用这个虚函数。传入的value参数是新当前值。
基类实现不执行任何操作。
另请参阅
- valueChanged(value)#
- 参数:
value – 对象
QVariantAnimation
在当前value改变时发出此信号。属性currentValue的通知信号。