- 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的通知信号。