QAbstractAnimation Class
QAbstractAnimation 是所有的动画类的基类. 更多...
头文件: | #include <QAbstractAnimation> |
qmake: | QT += core |
开始支持版本: | Qt 4.6 |
基类: | QObject |
派生类: |
公有类型
enum | DeletionPolicy { KeepWhenStopped, DeleteWhenStopped } |
enum | Direction { Forward, Backward } |
enum | State { Stopped, Paused, Running } |
属性
|
- 1 个属性继承自 QObject
公有函数
QAbstractAnimation(QObject *parent = Q_NULLPTR) | |
virtual | ~QAbstractAnimation() |
int | currentLoop() const |
int | currentLoopTime() const |
int | currentTime() const |
Direction | direction() const |
virtual int | duration() const = 0 |
QAnimationGroup * | group() const |
int | loopCount() const |
void | setDirection(Direction direction) |
void | setLoopCount(int loopCount) |
State | state() const |
int | totalDuration() const |
- 32 个公有函数继承自 QObject
公有槽函数
void | pause() |
void | resume() |
void | setCurrentTime(int msecs) |
void | setPaused(bool paused) |
void | start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped) |
void | stop() |
- 1 个公有槽函数继承自 QObject
信号
void | currentLoopChanged(int currentLoop) |
void | directionChanged(QAbstractAnimation::Direction newDirection) |
void | finished() |
void | stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
- 2 个信号继承自 QObject
受保护的函数
virtual void | updateCurrentTime(int currentTime) = 0 |
virtual void | updateDirection(QAbstractAnimation::Direction direction) |
virtual void | updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
重新实现的受保护函数
virtual bool | event(QEvent *event) |
- 9 个受保护的函数继承自 QObject
其他继承的成员
- 11 个静态公有成员继承自 QObject
详细描述
QAbstractAnimation 是所有的动画类的基类.
QAbstractAnimation 定义了所有动画共享的功能. 通过继承这个类, 你可以创建自定义动画, 并将其插入到动画框架中.
动画的进度由当前时间 (currentLoopTime()) 给出, 以毫秒为单位, 数值从动画开始 (0) 到结束 (duration()). 这个值会在动画运行时自动更新, 也可以直接调用 setCurrentTime() 设置.
在任何时候, 动画都处于三种状态之一: Running, Stopped, 或 Paused——由枚举变量 State 定义. 可以通过调用 start(), stop(), pause(), 或 resume() 更改当前动画状态. 动画在开始时, 总是会重置当前时间. 如果暂停, 则继续播放时会从相同的"当前时间"继续. 如果动画停止, 则无法恢复, 但会保留当前时间(直到再次开始). QAbstractAnimation 在状态改变时, 会发出 stateChanged().
通过设置 loopCount 属性, 动画可以循环任意次数. 当动画的当前时间到达 duration() 时, 它将重置当前时间并继续运行. 循环计数为 1(默认值)意味着动画将运行一次. 注意, 若duration为 -1, 动画将一直运行直到主动停止; 当前时间将无限增加. 当前时间等于 duration(), 且动画处于最后循环时, 进入 Stopped 状态, 并发出 finished() 信号.
QAbstractAnimation 为子类提供纯虚函数来跟踪动画进度: duration() 和 updateCurrentTime(). duration() 函数报告动画的持续时间(如上所述). 当前时间更改时, 动画框架调用 updateCurrentTime(). 通过重新实现该函数, 你可以跟踪动画进度. 注意: 这个函数的调用间隔和调用次数均未定义, 不过, 通常每秒更新 60 次.
重新实现 updateState(), 可以跟踪动画的状态变化, 这对于非时间驱动的动画特别有用.
参见 QVariantAnimation, QPropertyAnimation, QAnimationGroup, The Animation Framework.
成员类型
enum QAbstractAnimation::DeletionPolicy
Constant | Value | Description |
---|---|---|
QAbstractAnimation::KeepWhenStopped | 0 | 动画停止时不会被删除. |
QAbstractAnimation::DeleteWhenStopped | 1 | 动画停止时会自动删除. |
enum QAbstractAnimation::Direction
这个枚举变量描述了在 Running 状态时, 动画的方向.
Constant | Value | Description |
---|---|---|
QAbstractAnimation::Forward | 0 | "当前时间"随时间递增(即, 从0向终点/duration移动). |
QAbstractAnimation::Backward | 1 | "当前时间"随时间递减(即, 从终点/duration向0移动). |
参见 direction.
enum QAbstractAnimation::State
这个枚举变量描述了动画状态.
Constant | Value | Description |
---|---|---|
QAbstractAnimation::Stopped | 0 | 动画未运行. 这是 QAbstractAnimation 的初始状态, 也是 QAbstractAnimation 结束后的状态. 除非调用 setCurrentTime() 或调用 start() 启动动画, 否则"当前时间"不会改变. |
QAbstractAnimation::Paused | 1 | 动画暂停(即., 暂时挂起). 调用 resume() 将恢复动画. |
QAbstractAnimation::Running | 2 | 动画运行中. 当控制权处于事件循环中时, QAbstractAnimation 将会有规律地更新"当前时间", 并在适合地时机调用 updateCurrentTime(). |
参见 state() 和 stateChanged().
属性
currentLoop : const int
This property holds the current loop of the animation
这个属性描述动画当前的循环数. 动画的默认循环总数是1, 所以当前的循环次数总是0. 若循环总数是2, 则动画运行时间超过duration时, 重新开始, 并将当前时间重置为0, 当前循环次数为1, 以此类推.
当前循环变化时, QAbstractAnimation 会发出 currentLoopChanged() 信号.
访问函数:
int | currentLoop() const |
Notifier signal:
void | currentLoopChanged(int currentLoop) |
currentTime : int
This property holds the current time and progress of the animation
这个属性描述动画当前时间. 调用setCurrentTime函数修改当前时间, 调用 start() 让动画运行, 当前时间会随动画播放进度自动设置.
动画的当前时间从0开始, 到 totalDuration() 结束.
访问函数:
int | currentTime() const |
void | setCurrentTime(int msecs) |
参见 loopCount 和 currentLoopTime().
direction : Direction
这个属性表示动画在 Running 状态时的运行方向.
这个方向表明调用 start() 后, 时间从0向动画时长移动, 还是从动画时长向0移动.
默认方向是 Forward.
访问函数:
Direction | direction() const |
void | setDirection(Direction direction) |
Notifier signal:
void | directionChanged(QAbstractAnimation::Direction newDirection) |
duration : const int
这个属性表示动画的持续时间.
如果duration是-1时, 表示duration未定义. 这种情况下, loopCount被忽略.
访问函数:
virtual int | duration() const = 0 |
loopCount : int
This property holds the loop count of the animation
这个属性表示动画的循环次数. 默认值是1, 表示这个动画只播放一次, 然后停止. 通过修改这个值, 改变动画的循环次数. 当数值是0时, 动画完全不会运行; 当数值是-1时, 动画会永远循环, 直到主动停止. 如果动画未设置duration, 则无法循环, 即只会播放一次.
访问函数:
int | loopCount() const |
void | setLoopCount(int loopCount) |
state : const State
动画状态.
这个属性描述动画的当前状态. 动画状态改变时, QAbstractAnimation 会发出 stateChanged() 信号.
访问函数:
State | state() const |
Notifier signal:
void | stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
成员函数
QAbstractAnimation::QAbstractAnimation(QObject *parent = Q_NULLPTR)
QAbstractAnimation 构造函数, parent 是父对象指针.
参见 QVariantAnimation 和 QAnimationGroup.
[virtual]
QAbstractAnimation::~QAbstractAnimation()
若在运行中则停止动画, 然后销毁 QAbstractAnimation. 若当前动画是 QAnimationGroup 的一部分, 则会在销毁前被自动移除.
[signal]
void QAbstractAnimation::currentLoopChanged(int currentLoop)
循环改变时, QAbstractAnimation 发出这个信号. currentLoop 为当前循环.
注意: 这个信号是属性 currentLoop 的通知信号.
参见 currentLoop() and loopCount().
int QAbstractAnimation::currentLoopTime() const
返回当前循环中的当前时间. 它的范围为0到 duration().
参见 duration() and currentTime.
[signal]
void QAbstractAnimation::directionChanged(QAbstractAnimation::Direction newDirection)
动画方向改变时, QAbstractAnimation 发出这个信号. newDirection 是新方向.
注意: 这个信号是属性 direction 的通知信号.
参见 direction.
[pure virtual]
int QAbstractAnimation::duration() const
这个纯虚函数返回动画持续时间, 并定义 QAbstractAnimation 应该多久更新一次当前时间. 持续时间是本地的, 并且不包括循环总数.
返回值-1表示动画没有定义持续时间, 动画将永远运行下去, 直到被主动停止. 这对于非时间驱动的动画或者无法预测其持续时间的动画(例如., 游戏中事件驱动的音频回放)十分有用.
若这个动画是并行的 QAnimationGroup, 则持续时间是所有动画中最长的. 若这个动画是顺序的 QAnimationGroup, 则持续时间是所有动画的总和.
注意: 这个信号是属性 duration 的获取函数.
参见 loopCount.
[virtual protected]
bool QAbstractAnimation::event(QEvent *event)
QObject::event() 的重新实现.
[signal]
void QAbstractAnimation::finished()
动画停止, 并到达终点后, QAbstractAnimation 发出这个信号.
这个信号在 stateChanged() 之后发送.
参见 stateChanged().
QAnimationGroup *QAbstractAnimation::group() const
若这个动画是 QAnimationGroup 的一部分, 则会返回 QAnimationGroup 的指针, 否则返回nullptr.
参见 QAnimationGroup::addAnimation().
[slot]
void QAbstractAnimation::pause()
暂停动画. 动画暂停时, state() 返回 Paused
. 调用 resume() 或 start() 前, currentTime 的值保持不变. 若想从当前时间继续, 则调用 resume() 函数.
参见 start(), state(), and resume().
[slot]
void QAbstractAnimation::resume()
暂停后恢复动画. 动画恢复时, QAbstractAnimation会发出 resumed() 信号和 stateChanged() 信号. 当前时间不会变化.
参见 start(), pause(), and state().
[slot]
void QAbstractAnimation::setPaused(bool paused)
若 paused 是 true , 则暂停动画. 若 paused 是 false , 则恢复动画.
参见 state(), pause(), and resume().
[slot]
void QAbstractAnimation::start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)
开始动画. policy 参数表示动画在结束后是否会被删除. 动画启动时, 会发出 stateChanged() 信号, state() 会返回 Running. 当控制权回到事件循环时, 动画会自动播放, 并随播放进度周期性调用 updateCurrentTime().
若动画当前已被停止或者已经结束, 调用 start() 将重置动画, 并从头开始. 当动画到达终点时, 动画将会停止; 或者当其循环次数大于1, 则会从头开始.
若动画已经在运行中, 这个函数不会有任何操作.
[signal]
void QAbstractAnimation::stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
每当动画的状态从 oldState 变为 newState 时, QAbstractAnimation 会发出这个信号. 这个信号在调用虚函数 updateState()后发出.
注意: 这个信号是属性 state 的通知信号.
参见 updateState().
[slot]
void QAbstractAnimation::stop()
停止动画. 动画停止时, QAbstractAnimation 会发出 stateChanged() 信号, state() 返回 Stopped. 当前时间不会变化.
若动画到达终点后自动结束 (如., currentLoopTime() == duration() 和 currentLoop() > loopCount() - 1), 则会发出 finished() 信号.
int QAbstractAnimation::totalDuration() const
返回动画的有效持续时间, 包含循环次数.
参见 duration() and currentTime.
[pure virtual protected]
void QAbstractAnimation::updateCurrentTime(int currentTime)
这个纯虚函数会在动画的 currentTime 发生变化时被调用.
参见 updateState().
[virtual protected]
void QAbstractAnimation::updateDirection(QAbstractAnimation::Direction direction)
这个虚函数会在 QAbstractAnimation 的播放方向改变时被调用. 参数 direction 表示新的方向.
参见 setDirection() and direction().
[virtual protected]
void QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
这个虚函数会在动画的状态改变从 oldState 切换为 newState 时被调用.