Qt动画效果的幕后英雄:QTimeLine
其实动画的本质就是在每一定时间间隔内显示一帧图像,当这个间隔较短的时候人眼就感觉不出来了,觉得看到的是连续的影像。Qt为开发动画效果的人员提供了一个很好的时间控制类QTimeLine.
QTimeLine的最简单用法是
1 QTimeLine timeline=new QTimeLine(1000);
2 timeLine->setFrameRange(0, 100);
3 connect(timeline,SIGNAL(frameChanged(int)),yourobj,SLOT(yourobjslot(int)));
4 timeline->start();
解释:
1. 创建的时间线持续时长,参数值是毫秒数,1000就是1秒
2. 在这段时间线内,创建的输出值范围。也就是第三行中frameChanged信号里传出的参数值范围
3. QTimeLine的默认时间间隔是40ms(也就是1秒25帧),每个间隔会发出一个frameChanged()的信号,此处将该信号连接到你能控制动画效果的对象和槽上。
4. 启动timeline后,每个时间间隔的frameChanged()信号才能正常发出。
当然还有一些复杂的参数设置可以更好的控制你的效果。
setLoopCount(int count)该函数控制了动画的重复次数。默认是1,如果设置成0则表示无限循环。
setUpdateInterval(int interval)该函数用于控制更新动画的时间间隔。
在QTimeLine所设置的持续时长过去后,相应的会发出一个finished()的信号,你可以在接收到这个信号以后做一些扫尾的工作。
另外还有一个别致的选项:
setCurveShape (CurveShape shape),该选项用于控制间隔输出数值的一个变化规律。CurveShage现有的选项是
QTimeLine::EaseInCurve 0 The value starts growing slowly, then increases in speed.
QTimeLine::EaseOutCurve 1 The value starts growing steadily, then ends slowly.
QTimeLine::EaseInOutCurve 2 The value starts growing slowly, then runs steadily, then grows slowly again.
QTimeLine::LinearCurve 3 The value grows linearly (e.g., if the duration is 1000 ms, the value at time 500 ms is 0.5).
QTimeLine::SineCurve 4 The value grows sinusoidally.
QTimeLine::CosineCurve 5 The value grows cosinusoidally.
不多加解释了,2是默认值。因为即使没有这个选项,如果只输出均匀数(选项3),我们还是可以自己对数据进行二次加工,生成我们想要的任意规律的数字。
利用QTimeLine我们很容易实现一些图像消隐的效果,只需要你在每个间隔结束后显示图像消隐过程中不同阶段的一个定格即可。这里就有一个很好的例子,短短300余行,想必用不了你多长时间即可读通
http://qt.gitorious.org/qt-labs/graphics-dojo/trees/master/genie
我们www.cuteqt.com也奉献一个,互相交流:)
(没有找到怎么上载附件,例子先不贴了)
http://blog.csdn.net/cuteqt/article/details/4305019
Qt动画效果的幕后英雄:QTimeLine的更多相关文章
- Qt动画效果的实现,QPropertyAnimation
Qt动画架构中的主要类如下图所示: 动画框架由基类QAbstractAnimation和它的两个儿子QVariantAnimation和QAnimationGroup组成.QAbstractAnima ...
- Qt动画效果展示(文艺IT男)
该程序使用应用程序单窗口,主窗口继承于QMainWindow:主窗口有5个QToolButton部件(窗口底部的四个以及窗口中央的一个),单击窗口底部的QToolButton部件可以使窗口中央的那个Q ...
- QT动画时间轴控制 QTimeLine
QTimeLine类提供用于控制动画的时间轴 比如控制进度条的增长,图片,窗口的旋转,平移等等 QTimeLine有一个frameChanged(int)信号 当调用QTimeLine::start( ...
- Qt动画与Qt坐标小记
Qt动画 转载自: <http://jingyan.baidu.com/article/154b46315757b628ca8f4116.html> 和 <http://blog. ...
- Qt 动画框架
最近一个项目中的需要做动画效果,很自然就想起来用qt animation framework .这个框架真的很强大.支持多个动画组合,线性动画,并行动画等.在此总结一下使用该框架一些需要注意的地方: ...
- QT动画介绍(有例子可以下载)
所谓动画就是在一个时间段内的不同时间点有不同的状态,只要定义好这样状态,实现动画就是水到渠成的事情.当然做这件事情,最好用的就是状态机,点击这里查看Qt使用状态机实现动画效果实例. 不过,实现动画也有 ...
- QPropertyAnimation 几行代码快速制作流畅的动画效果
QPropertyAnimation Class 官方英文文档[点击前往] QPropertyAnimation Class 中文译文文档[点击前往] 简介 QPropertyAnimation ...
- Qt动画框架The Animation Framework
动画框架是Kinetic(运动)项目的一部分,它的目标是提供一中简单的方法创建动画的和流畅的GUI.借助Qt动画属性,可以提供非常自由的动画窗体组件和其他对象(QObjects).动画框架也能被用于图 ...
- 如何在pyqt中在实现无边框窗口的同时保留Windows窗口动画效果(一)
无边框窗体的实现思路 在pyqt中只要 self.setWindowFlags(Qt.FramelessWindowHint) 就可以实现边框的去除,但是没了标题栏也意味着窗口大小无法改变.窗口无法拖 ...
随机推荐
- flex新的心得
主要是对于flex: 与width: 的心得,先看代码. <head> <meta charset="UTF-8"> <meta name=" ...
- 从华为产品学到什么是devops
根据Gartner 2015 I&O Automation 报告,DevOps处于技术发展的最高点,实践受到高度关注,到底devops魔力在哪里? 从devops实践看主要是打破开发人员和运营 ...
- WPF中 MVVM模式的Slider Binding.
对于Button的Command的绑定可以通过实现ICommand接口来进行,但是Slider并没有Command属性. 另外如果要实现MVVM模式的话,需要将一些Method和Slider的Even ...
- Twitter "like" 动画实战
http://zhuanlan.zhihu.com/FrontendMagazine/20486738
- 0-1分布(伯努利分布)、n 重伯努利分布(二项分布)
1. 0-1 分布(伯努利分布) 0-1分布又名两点分布,或叫伯努利分布. P{X=k}=pk(1−p)1−k 其中 k=0,1. 伯努利分布未必一定是 0-1 分布,也可能是 a-b 分布,只需满足 ...
- 学习Hadoop和Spark的好的资源
1. 官网http://spark.apache.org 有各种资源链接: 2. 总结得很好的个人博客[从零开始学Hadoop系列]1)初识http://blog.csdn.net/u01016816 ...
- 在asp.net core中使用cookie认证
以admin控制器为要认证的控制器举例 1.对控制器设置权限特性 //a 认证命名空间 using Microsoft.AspNetCore.Authorization; using Microsof ...
- 开启win10下Ubuntu子系统的SSH服务
原文:开启win10下Ubuntu子系统的SSH服务 版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/zhouzme https://blog.csdn ...
- .Net Remoting的双向通信和Windows Service的宿主服务
原文:.Net Remoting的双向通信和Windows Service的宿主服务 作为微软分布式技术之一的.Net Remoting,从性能.安全等各方面来说都是相对比较稳定的,也是一项比较成熟的 ...
- Cocos2d-x3.1下实现相似iOS页面滑动指示圆点
原文地址:http://blog.csdn.net/qqmcy/article/details/37612457 代码下载:http://download.csdn.net/detail/qqmcy/ ...