QAbstractAnimation 类

QAbstractAnimation 类是所有动画的基础。 更多信息...

头文件 #include <QAbstractAnimation>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core
继承自 QObject
继承

QAnimationGroupQPauseAnimationQVariantAnimation

公共类型

枚举DeletionPolicy { KeepWhenStopped, DeleteWhenStopped }
枚举Direction { Forward, Backward }
枚举State { Stopped, Paused, Running }

属性

公共函数

QAbstractAnimation(QObject *parent = nullptr)
virtual~QAbstractAnimation()
QBindable<int>bindableCurrentLoop() const
QBindable<int>bindableCurrentTime()
QBindable<QAbstractAnimation::Direction>bindableDirection()
QBindable<int>bindableLoopCount()
QBindable<QAbstractAnimation::State>bindableState() const
intcurrentLoop() const
intcurrentLoopTime() const
intcurrentTime() const
QAbstractAnimation::Directiondirection() const
virtual intduration() const = 0
QAnimationGroup *group() const
intloopCount() const
voidsetDirection(QAbstractAnimation::Direction direction)
voidsetLoopCount(int loopCount)
QAbstractAnimation::Statestate() const
inttotalDuration() const

公共槽函数

voidpause()
voidresume()
voidsetCurrentTime(int msecs)
voidsetPaused(bool paused)
void开始(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)
void停止()

信号

void当前循环改变(int 当前循环)
void方向改变(QAbstractAnimation::Direction 新方向)
void完成()
void状态改变(QAbstractAnimation::State 新状态, QAbstractAnimation::State 旧状态)

受保护函数

virtual voidupdateCurrentTime(int 当前时间) = 0
virtual voidupdateDirection(QAbstractAnimation::Direction direction)
virtual voidupdateState(QAbstractAnimation::State 新状态, QAbstractAnimation::State 旧状态)

重实现受保护函数

virtual boolevent(QEvent *event) override

详细描述

此类定义了所有动画共享的功能函数。通过继承此类,您可以创建可以插入到其他动画框架中的自定义动画。

动画的进度由其当前时间给出(currentLoopTime()),这是从动画开始(0)到结束(duration())的时间(以毫秒计)。该值在动画运行时自动更新。也可以通过 setCurrentTime() 直接设置。

在任何时候,动画都处于三种状态之一: Running(运行),Stopped(停止)或 Paused(暂停)—如 State 枚举中定义。可以通过调用 start(),stop(),pause()或 resume() 来更改当前状态。动画启动时,总是会重置其 current time。如果暂停,则恢复时将继续使用相同的当前时间。当动画停止时,它不能恢复,但是会保留其当前时间(直到再次启动)。QAbstractAnimation会在其状态更改时发出 stateChanged()。

可以通过设置 loopCount 属性来让动画无限次循环。当一个动画的当前时间达到其 duration,它会重置当前时间并继续运行。循环计数为 1(默认值)表示动画将运行一次。注意,持续时间设置为 -1 表示动画将一直运行直到停止;当前时间将无限增加。当当前时间等于 duration 并且动画在其最后循环中时,将进入 Stopped 状态,并发出 finished() 信号。

QAbstractAnimation提供了用于跟踪动画进度的纯虚函数: duration()和 updateCurrentTimeduration函数允许您报告动画的持续时间(如上所述)。当当前时间改变时,动画框架会调用 updateCurrentTime。通过重新实现此函数,您可以跟踪动画进度。请注意,调用之间的间隔和此函数的调用次数都没有定义;尽管如此,通常为每秒60次更新。

通过重新实现updateState(),您可以跟踪动画的状态变化,这对不由时间驱动的动画特别有用。

另请参阅QVariantAnimationQPropertyAnimationQAnimationGroup动画框架.

成员类型文档

枚举QAbstractAnimation::DeletionPolicy

常量描述
QAbstractAnimation::KeepWhenStopped0当动画停止时,动画不会删除。
QAbstractAnimation::DeleteWhenStopped1当动画停止时,动画将被自动删除。

枚举QAbstractAnimation::Direction

此枚举描述了动画在运行状态时的方向。

常量描述
QAbstractAnimation::Forward0动画的当前时间随时间增加(即从0移动到结束/持续时间)。
QAbstractAnimation::Backward1动画的当前时间随时间减少(即从结束/持续时间移动到0)。

另请参阅方向.

枚举QAbstractAnimation::State

此枚举描述了动画的状态。

常量描述
QAbstractAnimation::Stopped0动画未运行。这是QAbstractAnimation的初始状态,当完成时,QAbstractAnimation将重新进入此状态。当前时间保持不变,直到调用setCurrentTime(),或者通过调用start()启动动画。
QAbstractAnimation::Paused1动画已暂停(即临时暂停)。调用resume()将恢复动画活动。
QAbstractAnimation::Running2动画正在运行。当控制权在事件循环中时,QAbstractAnimation将在适当的时候定期更新其当前时间,并调用updateCurrentTime()。

另请参阅state()和stateChanged().

属性文档

[bindable read-only] currentLoop : int

注意:此属性支持QProperty绑定。

此属性保留动画的当前循环

此属性描述了动画的当前循环。默认情况下,动画的循环计数为1,因此当前循环始终为0。如果循环计数为2,并且动画运行超过了其持续时间,它将自动倒回并在当前时间0,当前循环1处重新启动,依此类推。

当当前循环更改时,QAbstractAnimation将发出currentLoopChanged()信号。

[bindable] currentTime : int

注意:此属性支持QProperty绑定。

此属性保留动画的当前时间和进度

此属性描述了动画的当前时间。您可以通过调用setCurrentTime来更改当前时间,或者您可以调用start()并让动画运行,在动画进度时自动设置当前时间。

动画的当前时间从0开始,结束于totalDuration()。

注意:您可以将其他属性绑定到currentTime上,但不建议对其进行绑定。随着动画进行,currentTime将自动更新,从而取消其绑定。

另请参阅:loopCountcurrentLoopTime

[可绑定] direction : Direction

注意:此属性支持QProperty绑定。

此属性在动画处于运行状态时表示动画的方向。

此方向指示时间是从0开始向动画持续时间移动,还是在调用start()之后,从持续时间值开始向0移动。

默认情况下,此属性设置为正向

[只读] duration : const int

此属性表示动画的持续时间。

如果持续时间是-1,则表示持续时间未定义。在这种情况下,loopCount将被忽略。

访问函数

virtual intduration() const = 0

[可绑定] loopCount : int

注意:此属性支持QProperty绑定。

此属性表示动画的循环次数。

此属性以整数形式描述动画的循环次数。默认值是1,表示动画只运行一次然后停止。通过更改它,可以让动画循环多次。值为0时,动画将根本不会运行,值为-1时,动画会无限循环直到停止。不支持在具有未定义持续时间的动画上循环。它只会运行一次。

[可绑定只读] state : State

注意:此属性支持QProperty绑定。

动画的状态。

此属性描述动画的当前状态。当动画状态改变时,QAbstractAnimation会发出stateChanged()信号。

注意:状态更新可能会导致currentTime属性的更新,进而取消其绑定。因此,在预计动画状态会变化时,请小心设置currentTime属性的绑定。

成员函数文档

QAbstractAnimation::QAbstractAnimation(QObject *parent = nullptr)

构造QAbstractAnimation基类,并将parent传递给QObject的构造函数。

另请参阅:QVariantAnimationQAnimationGroup

[虚拟 noexcept] QAbstractAnimation::~QAbstractAnimation()

如果动画正在运行,则停止动画,然后销毁QAbstractAnimation。如果动画是QAnimationGroup的一部分,则在销毁之前会自动将其删除。

[信号] void QAbstractAnimation::currentLoopChanged(int currentLoop)

QAbstractAnimation 每当当前循环改变时都会发出此信号。 currentLoop 是当前循环。

注意:属性 currentLoop 的通知信号。

另请参阅:currentLoop() 和 loopCount

int QAbstractAnimation::currentLoopTime() const

返回当前循环中的当前时间。它可以从 0 到 duration ()。

另请参阅:duration() 和 currentTime

[信号] void QAbstractAnimation::directionChanged(QAbstractAnimation::Direction newDirection)

QAbstractAnimation 每当方向改变时都会发出此信号。 newDirection 是新的方向。

注意:属性 direction 的通知信号。

另请参阅方向.

[纯虚] int QAbstractAnimation::duration() const

此纯虚函数返回动画的持续时间,并定义 QAbstractAnimation 应更新当前时间的时长。此时长是局部的,不包括循环计数。

返回值为 -1 表示动画没有定义的持续时间;动画应持续运行,直到停止。这对于非时间驱动的动画或难以预测其持续时间的动画很有用(例如,游戏中由事件驱动的音频播放)。

如果动画是并行 QAnimationGroup,则持续时间将是所有动画中最长的持续时间。如果动画是顺序 QAnimationGroup,则持续时间将是所有动画持续时间之和。

注意:属性 duration 的获取函数。

另请参阅:loopCount

[重载虚保护函数] bool QAbstractAnimation::event(QEvent *event)

重写:QObject::event(QEvent *e)。

[信号] void QAbstractAnimation::finished()

QAbstractAnimation 在动画停止并到达结束时发出此信号。

stateChanged 之后发出此信号。

另请参阅:stateChanged

QAnimationGroup *QAbstractAnimation::group() const

如果此动画是 QAnimationGroup 的一部分,则此函数返回组指针;否则返回 nullptr

另请参阅:QAnimationGroup::addAnimation

[槽] void QAbstractAnimation::pause()

暂停动画。当动画暂停时,state() 返回 Paused。直到调用 resume() 或 start(),currentTime 的值将保持不变。若要从当前时间继续,请调用 resume

另请参阅start(),state() 及 resume()。

[slot] void QAbstractAnimation::resume()

在动画暂停后恢复动画。当动画恢复时,它将发出 resumed() 和 stateChanged() 信号。当前时间将保持不变。

另请参阅start(),pause() 和 state()。

[slot] void QAbstractAnimation::setPaused(bool paused)

如果 paused 为 true,则动画将暂停。如果 paused 为 false,则动画将恢复。

另请参阅state(),pause() 和 resume()。

[slot] void QAbstractAnimation::start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)

开始动画。参数 policy 指示动画完成后是否应该被删除。当动画开始时,将发出 stateChanged() 信号,并且 state() 返回 Running。当控制达到事件循环时,动画将自行运行,在动画进行期间,定期调用 updateCurrentTime()。

如果动画目前处于停止状态或已达到末尾,调用 start() 将回放动画并从开始处重新开始。当动画达到末尾时,动画将停止,或者如果循环级别超过 1,它将回放并从开始处继续。

如果动画已经在运行,此函数将不起作用。

另请参阅stop() 和 state()。

[signal] void QAbstractAnimation::stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

QAbstractAnimationWhenever the state of the animation changes from oldState to newState,emit this signal. This signal is emitted after the virtual updateState() function is called.

注意:属性 state 的通知信号。

另请参阅updateState()。

[slot] void QAbstractAnimation::stop()

停止动画。当动画停止时,它触发 stateChanged() 信号,并且 state() 返回 Stopped。当前时间不改变。

如果动画在达到结尾后自动停止(即 currentLoopTime() == duration() 并且 currentLoop() > loopCount() - 1),将触发 finished() 信号。

参见start() 和 state()。

int QAbstractAnimation::totalDuration() const

返回动画的总以及有效持续时间,包括循环次数。

另请参阅:duration() 和 currentTime

[纯虚保护] void QAbstractAnimation::updateCurrentTime(int currentTime)

每当动画的 currentTime 发生改变时,都会调用这个纯虚函数。

另请参阅updateState()。

[虚保护] void QAbstractAnimation::updateDirection(QAbstractAnimation::Direction direction)

当动画的方向改变时,QAbstractAnimation 会调用此虚函数。其中 direction 参数是新的方向。

参见setDirection() 和 direction()。

[虚保护] void QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

当动画的状态从 oldState 改变为 newState 时,QAbstractAnimation 会调用此虚函数。

参见start(),stop(),pause() 和 resume()。

© 2024 Qt 公司。本文档中的文档贡献属于各自所有者。本文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt 和相关的标志是芬兰的 Qt 公司和/或其他世界各地的商标。所有其他商标属于其各自所有者。