Qt动画框架:QAnimationGroup、QParallelAnimationGroup、QSequentialAnimationGroup、QPauseAnimation

QAnimationGroup

一、描述

动画组是动画的容器(QAbstractAnimation 的子类)。组通常负责管理组中动画的状态,即决定何时开始、停止、恢复和暂停它们。

QAnimationGroup 提供添加和检索动画的方法。除此之外,可以通过调用removeAnimation() 删除动画,并通过调用clear() 清除动画组。可以通过监听 QEvent::ChildAdded QEvent::ChildRemoved 事件来跟踪组动画的变化。

QAnimationGroup 获得它管理的动画的所有权,并确保在删除动画组时删除它们。

二、成员函数

1、void addAnimation(QAbstractAnimation *animation)

向组添加动画。这将调用索引等于 animationCount() 的 insertAnimation()。

2、QAbstractAnimation * animationAt(int index) 

返回指向该组中索引处的动画的指针。索引介于 0 和 animationCount() - 1 之间。

3、int animationCount() 

返回此组管理的动画数量。

4、void clear()

移除和删除此动画组中的所有动画,并将当前时间重置为 0。

5、int indexOfAnimation(QAbstractAnimation *animation) 

返回动画的索引。

6、void insertAnimation(int index, QAbstractAnimation *animation)

将动画插入此动画组的 index 索引处。如果索引为 0,则在开头插入动画。如果 index 是 animationCount(),则在最后插入动画。

7、void removeAnimation(QAbstractAnimation *animation)

从此组中删除动画。动画的所有权转移给调用者。

8、QAbstractAnimation * takeAnimation(int index)

返回索引处的动画并将其从动画组中删除。动画的所有权转移给调用者。


QParallelAnimationGroup

一、描述

并行动画容器组。在它启动时将启动组内所有动画,即并行运行所有动画。当持续时间最长的动画结束时,动画组结束。

可以将 QParallelAnimationGroup 视为任何其他 QAbstractAnimation,例如,暂停、恢复或将其添加到其他动画组。

    QParallelAnimationGroup *group = new QParallelAnimationGroup;
    group->addAnimation(anim1);
    group->addAnimation(anim2);

    group->start();

QSequentialAnimationGroup

一、描述

串行动画容器组。动画按照它们添加到组中的顺序播放。动画组在其最后一个动画完成时结束。

在每一时刻,组中最多有一个活动动画,它由 currentAnimation() 返回。

串行动画组可以被视为任何其他 QAbstractAnimation,即它可以开始、停止或添加到其他组。

    QSequentialAnimationGroup *group = new QSequentialAnimationGroup;
    group->addAnimation(anim1);
    group->addAnimation(anim2);

    group->start();

二、成员函数

1、【信号】void currentAnimationChanged(QAbstractAnimation *current)

在当前活动动画改变时发出这个信号。current 是当前动画。

2、QPauseAnimation * addPause(int msecs)

向此动画组添加 msecs 毫秒的暂停。暂停被视为一种特殊类型的动画,因此 animationCount() 将增加 1。

3、QPauseAnimation * insertPause(int index, int msecs)

在此动画组的索引处插入 msecs 毫秒的暂停。


QPauseAnimation

一、描述

如果希望在 QSequentialAnimationGroup 中的动画之间引入延迟,可以插入一个 QPauseAnimation。您可以在构造函数中指定暂停的持续时间。也可以直接用 setDuration() 设置。

没有必要自己构造 QPauseAnimation。 QSequentialAnimationGroup 提供了便利函数 addPause() 和 insertPause()。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值