qt同时两个动画执行_Qt动画组QAnimationGroup构建复杂的动画

在Qt中我们使用QPropertyAnimation就可以很轻松的实现动画效果,但是一个QPropertyAnimation只能绑定一个属性,也就是说只能用来展示某一个方面的动画效果。 然而在一些较为复杂的场景下单一个的动画效果就显得不够生动,这时候就需要多个QPropertyAnimation协同工作,毕竟现在处处都是讲究团队协作的,就连玩个游戏遇到一堆各干个的坑队友也是十分气人的。

那么多个QPropertyAnimation要怎么一起使用呢?比如说需要一个动画结束后接着另一个动画,我们可以通过连接第一个动画结束的槽函数,在槽函数中调用第二个动画的启动。如果需要两个动画同时运行又该怎么办呢?创建两个动画然后同时启动吗?事实上这样也是可行的就是太

麻烦了,如果要在两个动画之间停留一段时间还得加个定时器,逻辑就会变得非常的复杂了。

这时候就该让QAnimationGroup出场了,动画组顾名思义就是一组的动画,它有两个子类,一个是QParallelAnimationGroup并行动画组,该组里的动画同时运行,另一个是QSequentialAnimationGroup串行动画组,该组里的动画按照添加的顺序一个接一个执行。有了动画组的帮助

制作复杂的动画场景就简单多了。

并行动画举例:实现窗口逐渐清晰进入的效果,这里包含两个属性一个是窗口的透明度,另一个是窗口的位置。

从代码可以看出动画组的使用也很简单,就是调用addAnimation添加动画对象,最后调用一下start就好了,动画对象就不需要自己start动画了。运行效果如下:

串行动画举例: 在并行动画的基础上进行添加,当并行动画结束后让窗口抖动一下。我们可以通过改变窗口的位置来实现抖动效果,因此我们只需要再添加一个pos的属性动画就可以了。

从代码上看串行动画也是调用addAnimation添加动画对象,我们把并行动画组当成一个动画对象添加到串行动画组里。也就是说动画组之间也是可以嵌套使用的,有了嵌套想要实现复杂的动画效果就看你的想象力了。 需要注意的是这里串行动画组调用start启动动画,并行动画组不需要调用start。效果如下:

作者:fearlazy 名字由fear和lazy两个单词组成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值