在Qt中制作入门动画-1

1,Qt中的属性动画 

 

2,使用曲线控制属性动画

3,创建动画组

4,创建嵌套动画组

5,QT中的状态机

6,QML中的状态,转变,动画。

8,动画属性所用的动画器

9,图元动画

通过QT强大的动画框架,QT提供了一个继承自QObject类的动画的方法。既可以制作独立动画,也可以结合状态机框架,在目前激活的部件状态机上播放不同的动画。QT动画框架支持组动画,同时移动多个图形,或者有序的播放多个动画。

在这个例子中,我们将学习使用Qt动画属性类制作GUI动画。动画属性类是动画框架的一部分,借助动画框架,只需要简单的设置就可以做出流畅的动画。

1,创建Qt Widgets Application工程,打开mainwindow.ui,放入一个按钮。显示如下:

 

2,下一步,打开mainwindow.cpp,添加如下代码

#include <QPropertyAnimation>

 3,继续在构造函数中添加如下代码

QPropertyAnimation *animation=new QPropertyAnimation
(ui->pushButton,"geometry");
animation->setDuration(10000);
animation->setStartValue(ui->pushButton->geometry());
animation->setEndValue(QRect(200,200,100,50));
animation->start();

QT中的计时器是以微秒为单位,设置时间然后在设定开始动画。

在Qt中,通过动画属性类QPropertyAnimation制作GUI元素动画是最常用的方法之一。这个类也是动画框架的一部分,原理是在给定的时间内使用系统定时器记录GUI属性值的变化。

我们刚刚制作了按钮的移动动画和缩小动画。

在第二步时,引入QPropertyAnimation头文件,这样我们就可以使用QPropertyAnimation 提供的动画功能。

在第三步时,我们将新创建的属性动画应用到pushbutton。我们修改了push button的geometry 属性,并将动画持续10秒,这里的时间单位是微妙,所以是10000微妙=10秒。

然后,开始位置是默认初始化的位置。结束值是动画结束值。在这里,我们移动按钮到x:200,y:200,尺寸修改为宽:100,高:50.

最后,调用animation->start()启动动画。

编译运行后,会发现按钮以慢慢的速度移动,直到达到我们设定的值。现在可以改变动画的时间、位置、缩放,使动画更加明显。这样我们就实现了一个简单的动画!

Qt提供了一些不同的子动画系统,包括,timer,timeline,animation framework,state machine framework,graphics view frameword:

Timer:定时器提供重复的单镜头定时器。当时间溢出时,通过Qt信号槽函数触发回调函数。可以使用定时器在一个给定的时间里创建属性动画。比如颜色,位置,缩放等

Timeline:时间轴通过周期性的调用槽函数给GUI元素做动画。与定时器有些相似,但不同的是,当槽函数被触发时不会一直做同样的事情。时间轴会向槽函数传递一个目前动画帧的数值,所以可以根据这个数值做出不同的交互。

Animation framework:动画框架使GUI元素的属性动画更容易。动画由缓动曲线控制。缓动曲线是可以控制速度的曲线,可以控制元素动画的加速和减速。Qt支持的缓动曲线类型有:linear,quadratic,cubic,quartic,sine,exponential,circular,elastic.

state machine framework :当信号触发时,Qt提供了创建和执行状态图表,状态图表可以使GUI元素从一个状态移动到另一个状态。在状态机里的状态图表时有等级的,这就意味着状态图标可以嵌套使用。

Graphics view framwork:图形视图框架是一个视觉显示和交互的强大图形引擎,可以包含大量的自定义2D图形项目。如果你是一个很有经验的程序员,可以使用图形视图框架绘制GUI,并且可以更自由的制作动画。

通过使用这些工具,我们能够直观的创建带有缓动的GUI元素动画。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值