Qt动画框架:QAnimationGroup、QParallelAnimationGroup、QSequentialAnimationGroup、QPauseAnimation
QAnimationGroup一、描述动画组是动画的容器(QAbstractAnimation 的子类)。组通常负责管理组中动画的状态,即决定何时开始、停止、恢复和暂停它们。QAnimationGroup 提供添加和检索动画的方法。除此之外,可以通过调用removeAnimation() 删除动画,并通过调用clear() 清除动画组。可以通过监听 QEvent::ChildAdded 和 QEv
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()。
更多推荐
所有评论(0)