Qt中文文档-QAbstractAnimation

本文首发在个人网站www.qtdoc.cn


Qt中文文档-QAbstractAnimation 类


QAbstractAnimation 是所有的动画相关的基类

QAbstractAnimation 定义了所有动画类相关的基础功能,通过继承该类,你可以实现动画的其它功能,或者添加自定义的特效。

属性方法
Header:#include<QAbstractAnimation>
qmake:QT+=core
Since:Qt 4.6
Inherits:QObject
Inherited ByQAnimationGroup,QPauseAnimation,QVariantAnimation

简述

公共类型

属性方法
enumDeletionPolicy { KeepWhenStopped, DeleteWhenStopped }
enumDirection { Forward, Backward }
enumState { Stopped, Paused, Running }

属性

属性
currentLoop : const int
currentTime : int
direction : Direction
duration : const int
loopCount : int
state : const State

public函数

属性函数名
QAbstractAnimation(QObject * parent = Q_NULLPTR)
virtual~QAbstractAnimation()
intcurrentLoop() const
intcurrentLoopTime() const
intcurrentTime() const
Directiondirection() const
virtual intduration() const = 0
QAnimationGroup *group() const
intloopCount() const
voidsetDirection(Direction direction)
voidsetLoopCount(int loopCount)
Statestate() const
inttotalDuration() const

公有槽

属性函数名
voidpause()
voidresume()
voidsetCurrentTime(int msecs)
voidsetPaused(bool paused)
voidstart(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)
voidstop()

公有信号

属性函数名
voidcurrentLoopChanged(int currentLoop)
voiddirectionChanged(QAbstractAnimation::Direction newDirection)
voidfinished()
voidstateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

protect函数

属性函数名
virtual voidupdateCurrentTime(int currentTime) = 0
virtual voidupdateDirection(QAbstractAnimation::Direction direction)
virtual voidupdateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

可以重写的protect函数

属性函数名
virtual boolevent(QEvent *event)

详细说明

QAbstractAnimation类是所有动画的基础
该类是所有动画类的基类。通过继承这个类,你可以创建自定义的动画。
动画的进度的当前时间由函数currentLoopTime()控制,动画从0毫秒开始到其最后的持续时间(duration())。该值在动画运行时会自动更新。也可以由函数setCurrentTime()来进行设置。
在任何时候,动画的状态都只有三种:Running, Stopped,Paused(枚举变量enum State),可以通过函数start(),stop(),pause(),或者resume()来改变当前动画的状态。QAbstractAnimation在状态改变时将会发出信号stateChanged()。
通过设置loopCount属性,动画可以循环任意次数。当动画的时间到达duration()函数的返回值时,它将重置当前时间并继续运行。当duration为-1,将无限循环下去。当当前时间等于duration()时,并且处理最后一次循环时,动画将进入Stopped()状态,并发送finished()信号。
QAbstractAnimation为子类提供了纯虚函数来跟踪动画的进度:duration()和updateCurrentTime()。duration()函数提供动画的持续时间。(这特么不就是函数名字么?)。当动画时间变化时,QAbstractAnimation会调用updateCurrentTime()函数。通过重新实现该函数,你可以自己追踪动画的进度。不要在动画间隔之间来调用此功能,虽然此函数一分钟刷新60次。
通过重新实现updateState()函数,你可以自己追踪动画状态的改变,这对于不受时间驱动的动画特别有用
另见 QVariantAnimation , QPropertyAnimation , QAnimationGroup,The Animation Framework.


成员变量文档

enum QAbstractAnimation::DeletionPolicy

函数描述
QAbstractAnimation::KeepWhenStopped0动画停止时将不会删除
QAbstractAnimation::DeleteWhenStopped1动画停止时自动删除

enum QAbstractAnimation::Direction

该枚举描述了动画在运行时的方向

函数描述
QAbstractAnimation::KeepWhenStopped0动画停止时将不会删除
QAbstractAnimation::DeleteWhenStopped1动画停止时自动删除

enum QAbstractAnimation::State

该枚举描述了动画的状态

函数描述
QAbstractAnimation::Stopped0动画未运行。这是QAbstractAnimation的初始状态,通过调用setCurrentTime()函数或者start()来启动动画。
QAbstractAnimation::Paused1动画暂时,通过调用resume()函数恢复动画。
QAbstractAnimation::Running2动画运行中。当控件处于事件循环时,QAbstractAnimation将更新时间,并会一直调用updateCurrentTime()。

文档属性

currentLoop : const int


此属性为该动画当前的循环数
此属性描述了动画当前的循环数。默认的循环次数为1,所以当前的循环次数永远为0。如果循环总数为2的话,动画运行超过其duration或者重新开始,或者重置时间等等,总数则会减一。
当当前循环变化时,QAbstractAnimation会发出currentLoopChanged()信号
调用函数

属性函数名
intcurrentLoop() const

通知信号

属性函数名
voidcurrentLoopChanged(int currentLoop)

currentTime : int


此属性描述了动画当前的时间与进度
此属性描述了动画当前的时间,你可以通过调用函数setCurrentTime()来改变当前的时间。也可以通过调用start()函数让动画自己运行,随着动画的运行时间也会自己变化。
动画时间从0开始,以tatalDuration()函数结束。
调用函数

属性函数名
intcurrentTime() const
voidsetCurrentTime(int msecs)

另参见函数loopCount()与currentLoopTime()


direction : Direction


该属性为动画运行时的方向
简单的说就是正常播放的方向,还是倒放的方向(官方文档也有点啰嗦了)
默认方向为Forward
调用函数

属性函数名
Directiondirection() const
voidsetDirection(Direction direction)

通知信号

属性函数名
voiddirectionChanged(QAbstractAnimation::Direction newDirection)

duration : const int


该属性描述了动画已经播放的时间
如果duration为-1,则表示duration未定义,而且动画将会忽略loopCount属性。
调用函数

属性函数名
virtual intduration() const = 0

loopCount : int


该属性保存了动画的循环次数
默认下,该值为1,表示该动画只播放一次。通过改变其值,动画也会改变循环的次数。当该值为-1时,动画将会永远循环。如果动画没有duration属性,loopCount则无效。默认值为1。
调用函数

属性函数名
intloopCount() const
voidsetLoopCount(int loopCount)

state : const State


动画状态
此功能描述了动画的当前状态。当动画状态改变时,QAbstractAnimation发出stateChanged()信号。
调用函数

属性函数名
Statestate() const

通知信号

属性函数名
voidstateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

成员函数

QAbstractAnimation::QAbstractAnimation(QObject *parent = Q_NULLPTR)


构造QAbstractAnimation的基类,并将parent参数传递给QObject的构造函数。
另见QVariantAnimation, QAnimationGroup


QAbstractAnimation::~QAbstractAnimation() [virtual]


析构函数,当QAbstractAnimation运行结束后会自动销毁。如果QAbstractAnimation是QAnimationGroup的一部分,它会在破坏之前自动删除。


void QAbstractAnimation::currentLoopChanged(int currentLoop) [signal]


当当前循环发生变化时,QAbstractAnimation会发出该信号。currentLoop()为当前循环
注意:属性currentLoop()的通知信号
另见currentLoop()和loopCount()


int QAbstractAnimation::currentLoopTime() const


返回当前循环的当前时间。它的区间范围为[0 - duration()]
**另见 duration()和currentTime()


void QAbstractAnimation::directionChanged(QAbstractAnimation::Direction newDirection) [signal]


每当方向改变时,QAbstractAnimation会发送此信号。newDirection为新的方向。
注意:属性direction的通知信号
另见direction()


int QAbstractAnimation::duration() const [pure virtual]


这个纯虚函数返回QAbstractAnimation的持续时间,并定义QAbstractAnimation多久时间更新一次当前时间。duration是本地的,并且不包括循环总数。
当其值为-1时表示动画没有定义持续时间;动画将永远运行下去直到主动停止它。这对于非时间驱动的动画或者无法预测其持续时间的动画(例如游戏中自动播放的音乐背景)十分有用。
如果QAnimationGroup中的QAbstractAnimation是并行的,duration则是所有动画中最长的。如果
QAnimationGroup是线性顺序的,其duration是所有动画的总和。
注意:QAbstractAnimation获得duration的函数
另见:loopCount()


bool QAbstractAnimation::event(QEvent* event) [virtual protected]


QObject::event()的重新实现


void QAbstractAnimation::finished() [signal]


QAbstractAnimation在动画停止之后发送此信号,并且表示已经结束
该信号在stateChanged()之后发送
另见stateChanged()


QAnimationGroup *QAbstractAnimation::group() const


如果QAbstractAnimation是QAnimationGroup的一部分,则会返回QAnimationGroup的指针;否则返回NULL
另见QAnimationGroup::addAnimation()


void QAbstractAnimation::pause() [slot]


暂停动画。当动画暂停时,state()将返回Paused。在调用函数resume()或者start()前,currentTime()的值将会保持不变。如果想从当前时间继续,则需要调用resume()函数。
* 另见start(),state(),resume()*


void QAbstractAnimation::resume() [slot]


暂停后恢复动画。当动画恢复时,QAbstractAnimation会发出resume()信号和stateChanged()信号。当前时间将不会变化。
另见start(),pause(),state()


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


如果paused为true,动画暂停。如果pause为false,动画恢复。
另见 state(),pause(),resume().


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


开始动画。policy参数表示在动画结束后是否删除。动画启动时,会发出stateChanged()信号,state()会返回Running。当控件在到达event loop时,动画会自动播放,并在动画播放时会定期调用updateCurrentTime().
如果动画当前已经停止或者已经结束,调用该函数将会回滚动画并从头开始。当动画到达终点时,动画将会停止。或者当其循环次数大于1时也会从头开始。
如果动画正在运行时,调用该函数不会有任何变化。
另见函数stop(),state()


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


每当动画的状态从oldState变为newState时,QAbstractAnimation会发出此信号。在调用virtual updateState()函数时也会发送此信号。
注意:这是动画状态的通知信号
另见updateState()


void QAbstractAnimation::stop() [slot]


停止动画。当动画停止时,会发出stateChanged()信号,state()返回Stopped。当前时间不会变化。
如果动画到达终点后自己结束(比如currentLoopTime() == duration() 或者currentLoop() > loopCount() - 1),则会发送finished()信号。
**另见start()和state()。


int QAbstractAnimation::totalDuration() const


返货动画总和的有效持续时间(当然不只是一次的,肯定是loopCount()的总次数)
另参见duration()和currentTime()


void QAbstractAnimation::updateCurrentTime(int currentTime) [pure virtual protected]


每次动画的currentTime发生变化时,就会调用这个纯虚函数。一般QAbstractAnimation的子类会重新实现这个函数,或者你自己实现
另见 updateState()


void QAbstractAnimation::updateDirection(QAbstractAnimation::Direction direction) [virtual protected]


当动画的播放方向改变时,QAbstractAnimation会调用该虚函数。参数direction表示新的方向。
另见setDirection(),direction()


void QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)


当动画的状态改变时,此函数会自动调用。
**另见start(),stop(),pause(),resume()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值