- class QTimeLine#
类
QTimeLine
提供了控制动画的时间线。 更多...摘要#
属性#
currentTime
- 时间线的当前时间direction
- 当 QTimeLine 处于运行状态时,时间线的方向duration
- 时间线的总持续时间,单位为毫秒loopCount
- 时间线完成前应循环的次数updateInterval
- 每次QTimeLine更新其当前时间之间的时间,单位为毫秒
方法#
def
__init__
def
currentFrame
def
currentTime
def
currentValue
def
direction
定义
duration()
定义
endFrame()
定义
loopCount()
定义
startFrame()
定义
state()
虚函数#
槽函数#
定义
resume()
定义
setPaused()
定义
start()
定义
stop()
信号#
定义
finished()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对该代码片段的翻译做出贡献。如果您发现翻译存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述#
警告
本节包含了从C++自动翻译到Python的代码片段,可能存在错误。
它通常用于通过周期性地调用槽函数来动画化GUI控件。您可以通过将毫秒数传递给
QTimeLine
构造函数来构建时间线。时间线的持续时间描述了动画将运行多长时间。然后您通过调用setFrameRange()
来设置合适的帧范围。最后,将frameChanged()
信号连接到您希望动画化的小部件中的一个合适的槽函数(例如,在 QProgressBar 中调用 setValue())。当您调用start()
时,QTimeLine
将进入运行状态,并且以稳定的速率定期发出frameChanged()
信号,导致您连接的小部件的属性值从帧范围的低端增长到高端。您可以通过调用setUpdateInterval()
来指定更新间隔。完成后,QTimeLine
进入NotRunning
状态,并发出finished()
。示例
... progressBar = QProgressBar(self) progressBar.setRange(0, 100) # Construct a 1-second timeline with a frame range of 0 - 100 timeLine = QTimeLine(1000, self) timeLine.setFrameRange(0, 100) timeLine.frameChanged.connect(progressBar.setValue) # Clicking the push button will start the progress bar animation pushButton = QPushButton(tr("Start animation"), self) pushButton.clicked.connect(timeLine.start) ...
默认情况下,时间线只运行一次,从开始到结束。此时,您需要再次调用
start()
来从头开始。要使时间线循环播放,可以调用setLoopCount()
,传入时间线应运行完成前循环的次数。也可以通过调用setDirection()
来改变方向,造成时间线反向运行。您也可以通过调用setPaused()
在运行时暂停或恢复时间线。为了交互控制,还提供了setCurrentTime()
函数,该函数可以直接设置时间线的位置。尽管该函数在NotRunning
状态(例如,连接到QSlider的valueChanged()
信号)时最有用,但此函数可以在任何时间调用。框架接口对于标准小控件很有用,但您可以使用
QTimeLine
来控制任何类型的动画。QTimeLine
的核心在于valueForTime()
函数,该函数在给定的时间生成一个介于0和1之间的值。该值通常用于描述动画的步骤,其中0是动画的第一个步骤,而1是最后一个步骤。当运行时,QTimeLine
会通过调用valueForTime()
并发出valueChanged()
来生成0和1之间的值。默认情况下,valueForTime()
将应用一个插值算法来生成这些值。您可以通过调用setEasingCurve()
从一组预定义的时间线算法中选择。注意,默认情况下,
QTimeLine
使用InOutSine
,这提供了一种逐渐增长然后稳步增长,最后又逐渐增长的价值。对于自定义时间表,您可以重写valueForTime()
,在这种情况下,QTimeLine
的easingCurve
属性将被忽略。另请参阅
QProgressBarQProgressDialog
- class State#
该枚举描述了时间线的状态。
常量
描述
QTimeLine.NotRunning
时间线未运行。这是
QTimeLine
的初始状态,且当其完成时将重新进入该状态。当前时间、帧和值将保持不变,直到调用setCurrentTime()
或通过调用start()
启动时间线。QTimeLine.Paused
时间线已暂停(即,暂时挂起)。调用
setPaused
(false) 将重新开始时间线活动。QTimeLine.Running
时间线正在运行。在事件循环中,
QTimeLine
将以固定时间间隔更新其当前时间,并在适当的时候发出valueChanged()
和frameChanged()
信号。另请参阅
- class Direction#
此枚举描述了在
Running
状态下时间线的方向。常量
描述
QTimeLine.Forward
时间线的当前时间随时间递增(即,从0开始向结束/持续时间移动)。
QTimeLine.Backward
时间线的当前时间随时间递减(即,从结束/持续时间开始向0移动)。
另请参阅
注意
在使用
from __feature__ import true_property
时可以直接使用属性,或者通过访问器函数使用。- 属性 currentTime: int#
此属性保留时间线的当前时间。
当
QTimeLine
处于正在运行状态时,此值会根据时间线的持续时间和方向持续更新。否则,它是指最后一次调用停止
时的当前值,或者由 setCurrentTime() 设定的值。注意
您可以将其他属性绑定到 currentTime,但不建议设置到它。随着动画的进行,currentTime 会自动更新,这会取消其绑定。
默认情况下,此属性包含值为 0。
- 属性 direction: QTimeLine.Direction#
此属性在
QTimeLine
处于运行
状态时保留时间线的方向。该方向指示时间是从 0 移动到时间线的持续时间,还是从持续时间开始,移动到 0,这是在调用
start
之后。任何对方向的绑定都不仅会被 setDirection() 移除,还会被
toggleDirection
移除。默认情况下,此属性设置为
正向
。- 属性 duration: int#
此属性在毫秒中保留时间线的总持续时间。
默认情况下,此值为 1000(即 1 秒),但您可以通过将持续时间传递给
QTimeLine
的构造函数或通过调用 setDuration() 来更改此值。持续时间必须大于 0。注意
更改持续时间不会将当前时间重置为零或新的持续时间。您还需要调用
setCurrentTime
并使用所需的值。- 访问函数
- 属性 easingCurve: QEasingCurve#
指定timeline将使用的缓动曲线。如果重写了
valueForTime()
,则此值会被忽略。另请参阅
- 属性 loopCountᅟ: int#
此属性存储了在完成前timeline应循环的次数。
循环次数为0表示timeline将无限循环。
默认情况下,此属性包含的值为1。
- 属性 updateIntervalᅟ: int#
此属性存储QTimeLine在更新其当前时间之间的时间间隔(以毫秒为单位)。
更新当前时间时,如果当前值更改,QTimeLine将发出
valueChanged()
信号,如果帧更改,则发出frameChanged()
信号。默认情况下,间隔为40毫秒,对应每秒更新25次。
用指定毫秒数的时长构造一个timeline。将
parent
传递给QObject
构造函数。默认时长为1000毫秒。- currentFrame()#
- 返回类型:
int
返回与当前时间对应的帧。
- currentTime()#
- 返回类型:
int
另请参阅
属性
currentTime
的获取器。- currentValue()#
- 返回类型:
浮点数
返回与当前时间对应的值。
- direction()#
- 返回类型:
另请参阅
属性
direction
的获取器。- duration()#
- 返回类型:
int
另请参阅
属性
duration
的获取器。- easingCurve()#
- 返回类型:
另请参阅
属性
easingCurve
的获取器。- endFrame()#
- 返回类型:
int
返回结束帧,即时间轴结束时的帧(即当前值为1的帧)。
- finished()#
当
QTimeLine
完成(即达到时间轴的末尾)且不循环时,会发出此信号。- frameChanged(arg__1)#
- 参数:
arg__1 – 整数
QTimeLine
在运行
状态下定期发出此信号,但只有当前帧改变时才会。frame
是当前帧号。- frameForTime(msec)#
- 参数:
msec – 整数
- 返回类型:
int
返回对应于时间
msec
的帧。该值使用起点和终点帧的线性插值计算,基于由valueForTime()
返回的值。- loopCount()#
- 返回类型:
int
另请参阅
属性
loopCount
的getter。- resume()#
从当前时间恢复时间轴。
QTimeLine
将重新进入运行状态,并在进入事件循环后,会定期更新它的当前时间、帧和值。与
start()
相比,此函数在恢复之前不会重启时间轴。- setCurrentTime(msec)#
- 参数:
msec – 整数
另请参阅
属性
currentTime
的setter。属性
direction
的setter。- setDuration(duration)#
- 参数:
duration – int
另请参阅
属性
duration
的setter。- setEasingCurve(curve)#
- 参数:
curve –
QEasingCurve
另请参阅
属性
easingCurveᅟ
的设置器。- setEndFrame(frame)#
- 参数:
frame – int
设置结束帧,这是时间线结束对应帧(即当前值为1的帧),设置为
frame
。- setFrameRange(startFrame, endFrame)#
- 参数:
startFrame – int
endFrame – int
设置时间线的帧计数器从
startFrame
开始,到结束的endFrame
。对于每个时间值,当您调用QTimeLine
或currentFrame()
或frameForTime()
时,将通过插值找到相应的帧,使用valueForTime()
的返回值。当处于运行状态时,
QTimeLine
还会在帧改变时发出frameChanged()
信号。- setLoopCount(count)#
- 参数:
count – int
另请参阅
属性
loopCountᅟ
的设置器。- setPaused(paused)#
- 参数:
paused – bool
如果
paused
为 true,播放列表将暂停,使得QTimeLine
进入暂停状态。除非调用start()
或设置paused
为 false,否则不会发出更新信号。如果paused
为 false,播放列表将继续从上次暂停的位置继续播放。- setStartFrame(frame)#
- 参数:
frame – int
设置开始帧,即对应于播放列表开始帧的帧(即当前值为 0 的帧),为
frame
。- setUpdateInterval(interval)#
- 参数:
interval – int
另请参阅
属性
updateIntervalᅟ
的设置器。- start()#
启动播放列表。
QTimeLine
将进入运行状态,一旦进入事件循环,它将定期更新当前时间、帧和值。默认间隔为 40 毫秒(即每秒 25 次)。您可以通过调用setUpdateInterval()
来更改更新间隔。播放列表将从一个起始位置(正向)或结束位置(逆向)开始。如果您想在不重新启动的情况下恢复停止的播放列表,可以调用
resume()
代替。- startFrame()#
- 返回类型:
int
返回起始帧,即时间线开始处的帧(即当前值为0的帧)。
返回时间线的状态。
另请参阅
每当
QTimeLine
的状态改变时,都会发出此信号。新状态是newState
.- stop()#
停止时间线,使
QTimeLine
进入NotRunning
状态。另请参阅
- toggleDirection()#
切换时间线的方向。如果方向是正向,则变为反向,反之亦然。
移除现有的
direction
绑定。另请参阅
- updateInterval()#
- 返回类型:
int
另请参阅
属性
updateInterval
的获取器。- valueChanged(x)#
- 参数:
x – float
QTimeLine
在Running
状态下,在当前值发生变化时以固定的时间间隔发出此信号。其中value
是当前值。该值介于 0.0 和 1.0 之间。- valueForTime(msec)#
- 参数:
msec – 整数
- 返回类型:
浮点数
返回时间
msec
对应的时间线值。根据曲线形状,返回值总是在 0 和 1 之间。如果msec
为 0,则默认实现总是返回 0。重新实现此函数以为您的时间线提供自定义曲线形状。