QAbstractAnimation类

 

QAbstractAnimation 类是所有动画的基础。

Header:#include <QAbstractAnimation>
CMake:find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake:QT += core
Inherits:QObject
Inherited By:

QAnimationGroup

QPauseAnimation

QVariantAnimation


【详细描述】

★ QAbstractAnimation类定义所有动画共享的功能,通过继承这个类,可以引入QT动画框架以便自定义动画。

★ QT中,动画的进度由当前时间   (currentLoopTime()) 以毫秒为单位给出,从动画开始 (0) 到结束 (duration()),这个进度值始终在动画播放时自动更新。用户也可以用  setCurrentTime() 设置。

★ 动画在任何时候都处于以下三种状态之一:  RunningStopped,  Paused ,由 State 枚举定义。可以通过调用 start(), stop(), pause() 或 resume()来更改当前状态。

★ 动画在启动时将始终重置。如果暂停,它将在恢复时以相同的当前时间  current time 继续。当动画停止时,它无法恢复,但会保持其当前时间(直到再次启动)。每当其状态发生变化时,QAbstractAnimation 都会发出  stateChanged() 。

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

★ QAbstractAnimation 提供子类使用的纯虚函数来跟踪动画的进度: : duration() 和updateCurrentTime()。  duration() 函数允许您报告动画的持续时间(如上所述)。动画框架在当前时间更改时调用  updateCurrentTime()。通过重新实现此功能,您可以跟踪动画进度。请注意,调用之间的间隔和调用此函数的次数均未定义,不过,它通常是每秒 60 次更新。

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

参见 QVariantAnimationQPropertyAnimationQAnimationGroup, and The Animation Framework


【公有类型】(枚举)

enum

DeletionPolicy 

KeepWhenStopped 动画对象在停止时不会被删除。

DeleteWhenStopped 动画对象停止时会自动删除。

enum

Direction 

Forward  动画的当前时间随时间增加(即从 0 向结束/持续时间移动)。

Backward  动画的当前时间随时间减少(即从结束/持续时间移向 0)。

enum

State

Stopped  动画没有运行。这是 QAbstractAnimation 的初始状态,完成后重新进入Stopped状态。

Paused  动画暂停。

Running  动画正在运行。


【属性】

属性名简介

currentLoop : int

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

currentTime : int

此属性描述动画的当前时间。可以通过调用 setCurrentTime 来更改当前时间,也可以调用 start() 并让动画运行,随着动画的进行自动设置当前时间。

direction : Direction

此属性在动画处于 Running 状态时保持动画的方向。

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

duration : const int

此属性保存动画的持续时间。

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

loopCount : int

此属性以整数形式描述动画的循环计数。默认情况下,此值为 1,表示动画应仅运行一次,然后停止。通过更改它,您可以让动画循环多次。如果值为 0,则动画将根本不运行,如果值为 -1,则动画将永远循环,直到停止。不支持在持续时间未定义的动画上循环。它只会运行一次。

state : State

动画的状态。

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


【公有函数】

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::State

state() const

inttotalDuration() const

【公有槽函数】

voidpause()
voidresume()
voidsetCurrentTime(int msecs)
voidsetPaused(bool paused)
voidstart(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)
voidstop()

【信号】

void

currentLoopChanged(int currentLoop)

当前循环改变时发送的信号。
void

directionChanged(QAbstractAnimation::Direction newDirection)

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

finished()

在动画停止并到达末尾后发出此信号。
void

stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

每当动画的状态从 oldState 更改为newState时,就会发出此信号。

【受保护函数】

virtual voidupdateCurrentTime(int currentTime) = 0
virtual voidupdateDirection(QAbstractAnimation::Direction direction)
virtual voidupdateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

【重实现的受保护函数】

virtual boolevent(QEvent *event) override

<<<返回上一级【QObject】 

<<<返回根页面 

  • 28
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
qpropertyanimationQt中用于动画效果制作的,可以对指定的QObject进行属性动画效果的实现。而qabstractanimation::forward()是qabstractanimation的成员函数,用于将动画播放方向设定为正向播放。在动画播放过程中,通过调用forward()函数可以保证动画的正向播放,达到更好的效果。 qabstractanimation是一个抽象基,qpropertyanimation则是其派生之一。forward()函数是其中一个公共成员函数,用于设置动画的播放方向。除此之外,qabstractanimation还有其他的方法和函数用于控制动画的播放和结束,如start()和stop()等。 在使用qpropertyanimation时,如果需要保证动画的正向播放,则需要调用forward()函数将动画方向设置为正向。例如,对于一个QLabel,可以通过qpropertyanimation对其中的text属性进行动画效果制作。代码如下: ```cpp QPropertyAnimation *animation = new QPropertyAnimation(label, "text"); animation->setDuration(1000); animation->setStartValue("Hello, World!"); animation->setEndValue("Qt is awesome!"); animation->forward(); animation->start(); ``` 上述代码中,我们创建了一个QPropertyAnimation对象,对label的text属性进行动画效果制作,动画的播放时间为1秒,开始值为"Hello, World!",结束值为"Qt is awesome!"。在调用forward()函数后,动画将会正向播放。最后,我们调用start()函数启动动画效果。 综上所述,qpropertyanimation和qabstractanimation::forward()是Qt中常用的动画效果实现和函数,它们可以通过简单的调用实现动画效果的制作和播放。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值