- class QAbstractAnimation#
QAbstractAnimation
类是所有动画的基础。 更多…继承自:
QVariantAnimation
、QPropertyAnimation
、QPauseAnimation
、QAnimationGroup
、QSequentialAnimationGroup
、QParallelAnimationGroup
自版本4.6起引入。
概述#
属性#
方法#
def __init__
def currentLoop
def currentLoopTime
def currentTime
def direction
def group
def loopCount
def setDirection
def setLoopCount
def state
def totalDuration
虚方法#
def duration
def updateDirection
def updateState
槽函数#
信号#
注意
此文档可能包含从C++自动翻译成Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告诉我们。
详细描述#
该类定义了所有动画功能共享的功能。通过继承此类,您可以创建自定义动画,并将其集成到其余动画框架中。
动画的进度由其当前时间(
currentLoopTime()
)确定,该时间从动画开始(0)到结束(duration()
)以毫秒计算。该值在动画运行时会自动更新。它也可以通过setCurrentTime()
直接设置。动画可以处于以下三种状态之一:
正在运行
、已停止
或者已暂停
——由枚举State
定义。可以通过调用start()
、stop()
、pause()
或resume()
来改变当前状态。动画面开始时总是重置其current time
。如果处于暂停状态,在恢复时将继续使用相同的当前时间。当动画被停止时,无法恢复,但将保持其当前时间(直到再次开始)。QAbstractAnimation
将在其状态改变时发射stateChanged()
。通过设置
loopCount
属性,动画可以无限循环。当动画的当前时间达到其duration()
时,它将重置当前时间并继续运行。循环次数为1(默认值)表示动画将运行一次。请注意,持续时间设置为-1表示动画将在停止前一直运行;当前时间将无限增加。当当前时间等于duration()
且动画处于最后一个循环时,动画将进入Stopped
状态,并发射finished()
信号。QAbstractAnimation
提供了用于子类跟踪动画进度的纯虚函数:duration()
和updateCurrentTime()
。duration()
函数允许您报告动画的持续时间(如上所述)。当当前时间改变时,动画框架会调用updateCurrentTime()
。通过重新实现此函数,您可以跟踪动画的进度。请注意,调用之间的间隔以及调用此函数的次数均未定义;尽管如此,它通常会以每秒60次更新。通过重新实现
updateState()
,您可以跟踪动画状态的变化,这对于不由时间驱动的动画特别有用。- class Direction#
此枚举描述了动画在
Running
状态下的方向。常量
描述
QAbstractAnimation.Forward
动画的当前时间随时间增加(即从0移向结束/持续时间)。
QAbstractAnimation.Backward
动画的当前时间随时间减少(即从结束/持续时间移向0)。
另请参阅
- class State#
此枚举描述了动画的状态。
常量
描述
QAbstractAnimation.Stopped
动画未运行。这是
QAbstractAnimation
的初始状态,且当动画完成后,状态会重新进入。当前时间保持不变,直到调用setCurrentTime()
或通过调用start()
开始动画。QAbstractAnimation.Paused
动画已暂停(即临时挂起)。调用
resume()
将恢复动画活动。QAbstractAnimation.Running
动画正在运行。在事件循环中,
QAbstractAnimation
将定期更新其当前时间,并在适当的时候调用updateCurrentTime()
。另请参阅
- class DeletionPolicy#
常量
描述
QAbstractAnimation.KeepWhenStopped
动画在停止时不会被删除。
QAbstractAnimation.DeleteWhenStopped
动画在停止时会自动删除。
注意
当使用
from __feature__ import true_property
时可以直接使用属性,否则可通过访问器函数使用。- property currentLoopᅟ: int#
此属性包含动画当前的循环。
此属性描述动画的当前循环。默认情况下,动画的循环次数为 1,因此当前循环始终为 0。如果循环次数为 2,且动画运行时间超过持续时间,它将自动回退并重新开始,当前时间 0,当前循环 1,依此类推。
当前循环发生变化时,
QAbstractAnimation
将发出currentLoopChanged()
信号。- 访问函数
- property currentTimeᅟ: int#
此属性包含动画的当前时间和进度。
此属性描述了动画的当前时间。您可以通过调用 setCurrentTime 来更改当前时间,或者调用
start()
并让动画运行,将当前时间自动设置为动画的进度。动画的当前时间从 0 开始,到
totalDuration()
结束。注意
您可以将其他属性绑定到 currentTime 上,但建议不要将其绑定。因为动画的进行会自动更新 currentTime,这会取消其绑定。
- 属性direction:QAbstractAnimation.Direction#
此属性存储动画在
运行
状态时的方向。此方向指示时间是否从 0 向动画持续时间移动,还是在调用
start()
后从持续时间的值向 0 移动。默认情况下,此属性设置为
正向
。- 属性duration: int#
此属性存储动画的持续时间。
如果持续时间是 -1,则表示持续时间未定义。在这种情况下,
loopCount
被忽略。- 访问函数
- 属性loopCount: int#
此属性存储动画的循环次数。
此属性以整数形式描述动画的循环次数。默认值是 1,表示动画只运行一次然后停止。更改此值可以使得动画循环多次。值为 0 时,动画不会运行;值为 -1 时,动画会无限循环直到停止。不支持在具有未定义持续时间的动画上使用循环。它只运行一次。
- 属性state:QAbstractAnimation.State#
此属性存储动画的状态。
此属性描述动画的当前状态。当动画状态发生变化时,
QAbstractAnimation
会发出stateChanged()
信号。注意
状态更新可能会更新代码 arg 《a class="reference internal" href="#id1" title="PySide6.QtCore.QAbstractAnimation.currentTime">
currentTime
属性,而这反过来又可能导致其数据绑定的取消。因此,在预期动画状态发生变化时,请谨慎设置currentTime
属性的绑定。- 访问函数
- __init__([parent=None])#
- 参数:
parent – 代码 arg 《a class="reference internal" href="QObject.html#PySide6.QtCore.QObject" title="PySide6.QtCore.QObject">
QObject
构建了
QAbstractAnimation
基类,并将parent
传递给QObject
的构造函数。另请参阅
- currentLoop()#
- 返回类型:
int
是属性
currentLoop
的获取器。- currentLoopChanged(currentLoop)#
- 参数:
currentLoop – int
QAbstractAnimation
会在当前循环发生变化时发出此信号。currentLoop
是当前的循环。另请参阅
属性
currentLoop
的通知信号。- currentLoopTime()#
- 返回类型:
int
返回当前循环内的当前时间。这可以从0到
duration()
。另请参阅
- currentTime()#
- 返回类型:
int
另请参阅
属性
currentTime
的获取器。- direction()#
- 返回类型:
另请参阅
属性
direction
的获取器。QAbstractAnimation
在方向改变时发出此信号。newDirection
是新的方向。另请参阅
属性
direction
的通知信号。- abstractduration()#
- 返回类型:
int
这个纯虚拟函数返回动画的持续时间,并定义
QAbstractAnimation
应该更新当前时间多长时间。这个持续时间是局部的,不包括循环次数。返回值是-1表示动画没有定义的持续时间;动画应该一直运行直到停止。这对于非时间驱动的动画或难以预测其持续时间的场合很有用(例如,游戏中的事件驱动音频播放)。
如果动画是并行
QAnimationGroup
,持续时间将是所有动画中最长的持续时间。如果动画是顺序QAnimationGroup
,持续时间将是所有动画持续时间的总和。另请参阅
属性
duration
的获取器。- finished()#
动画停止并达到末尾后,
QAbstractAnimation
发出此信号。在
stateChanged()
之后发出此信号。另请参阅
- group()#
- 返回类型:
如果这个动画是
QAnimationGroup
的一部分,则此函数返回该数组的指针;否则,返回None
。另请参阅
- loopCount()#
- 返回类型:
int
另请参阅
属性
loopCount
的获取器。- pause()#
暂停动画。当动画被暂停时,
state()
返回 Pause 状态。函数的currentTime
值将保持不变,直到调用resume()
或start()
。如果要从当前时间继续,请调用resume()
。- resume()#
在动画暂停后继续播放。当动画恢复时,将发出 resumed() 和
stateChanged()
信号。当前时间不改变。- setCurrentTime(msecs)#
- 参数:
msecs – int
另请参阅
属性
currentTime
的设置器。属性
direction
的设置器。- setLoopCount(loopCount)#
- 参数:
loopCount – int
另请参阅
属性
loopCount
的设置器。- setPaused(arg__1)#
- 参数:
arg__1 – bool
如果
paused
为 true,则动画暂停。如果paused
为 false,则动画恢复。- start([policy=QAbstractAnimation.DeletionPolicy.KeepWhenStopped])#
- 参数:
policy –
DeletionPolicy
开始动画。参数
policy
指明动画完成后是否应该被删除。当动画开始时,会发出stateChanged()
信号,且state()
返回 Running。当控制达到事件循环时,动画将自行运行,周期性地调用updateCurrentTime()
,以使动画进展。如果动画当前处于停止状态或已到达末尾,调用 start() 将使动画倒退并从头开始。当动画到达末尾时,动画将停止,或者如果循环级别超过 1,则将倒退并从开始位置继续。
如果动画已经在运行,此函数将不执行任何操作。
属性
state
的获取器。QAbstractAnimation
在动画状态从oldState
变为newState
时发出此信号。在调用虚拟函数updateState()
后发出该信号。另请参阅
属性
state
的通知信号。- stop()#
停止动画。动画停止时,会发出
stateChanged
信号,并且state
返回 Stopped。当前时间不会改变。如果动画在到达结尾后自动停止(即
currentLoopTime
==duration
并且currentLoop
>loopCount
- 1),则发出finished
信号。- totalDuration()#
- 返回类型:
int
返回动画的总持续时间,包括循环次数。
另请参阅
- 抽象 updateCurrentTime(currentTime)#
- 参数:
currentTime – int
每次动画的
currentTime
发生改变时,都会调用这个纯虚函数。另请参阅
这个虚函数在动画方向改变时由
QAbstractAnimation
调用。参数direction
是新的方向。这个虚函数在动画状态从
oldState
变为newState
时由QAbstractAnimation
调用。