深入浅出理解QTimeLine类

转载 2015年11月20日 23:10:09

 网上找了下QTimeLIne类的介绍,要么就是代码一贴自己看去,要么就是说不到重点,正巧自己项目遇到这个类,在这里写一下,给需要的同学看下。

    因为我最近需要有动画方面配合时间间隔触发QGraphicsView框架的需求,意外找到了一个Qt中很实用的时间类QTImeLine,现在让我们一起来学习一下它。

    QTimeLine拥有一个时间轴来控制时间动画和事件,其中在构造函数传入的时候你需要指定一个毫秒级的参数来指定他的总运行时间比如new QTImeLine(1000),表示它运行的总时间为1秒。

    第二步你要做的就是对QTImeLine的时间轴设置动画帧数,相信了解动画的人对帧数应该不陌生,不了解的人你可以跟我一样把它想象成一个动画表示的时 候有多少张静态画面组成,所以对QTimeLine::setFrameRange(0, 100)。表明该动画一共有100张静态画面来组成,同时请注意,构造函数传入的时候有一个时间参数,同学们千万别以为frame和time有着必然的联 系,其实时间再长或者时间再短,我的整个100帧都可以走完,只是走完时,会受时间影响的控制来影响我的帧数步长。比如你的时间设置为0ms,但帧数是 100,所以点了start之后一下子就到了100帧(Qt中默认规定40ms一帧,也就是一秒可以最多走25帧,但是如果你设置的是0ms,Qt会默认 按照40ms一帧的速度来走),同样如果你设置了80ms,按照Qt的习惯,其实就是给你两次走帧机会,聪明的同学应该猜到了,就是50帧和100帧。

    第三步,你可以设置你的时间变换曲线,即setCurveShape函数来规定明确你的时间是先快后慢,还是先慢后快,或者线性,或者正余弦,比较常用的就是LinearCurve线性变换。

    第四步,其实到这边已经差不多了,在用connect连接好它的frameChanged(int)函数的时候,你设置好自己的响应时间槽,就可以触发start来完成自己的动画效果了。

    PS:有的同学会问到setUpdateInterval函数是用来干嘛的,其实你可以简单的理解为,时间轴的走的时候,会不断的发出frameChanged信号,这个update就是给它把关多少时间发一次的,其实两者并不冲突。

    合理利用QTimeLIne类来控制自己的QGraphicsItem动画,enjoy!



FROM:  http://www.cnblogs.com/rickyk/p/4044875.html

QT学习笔记-24.使用QTimeLine

一个简单的代码如下: #include  #include #include int main(int argc, char *argv[]) { QApplication ...
  • imxiangzi
  • imxiangzi
  • 2015年11月20日 23:10
  • 1606

QML与Qt C++ 交互机制探讨与总结

介绍 QML和 C++对象可以通过,signals,slots和 属性修改进行交互。对于一个C++对象,任何数据都可以通过Qt的 Meta-Object System暴露给QML(何总方法,后面介绍...
  • zhx6044
  • zhx6044
  • 2013年04月18日 18:18
  • 1633

QTimeLine

Qt动画效果的幕后英雄:QTimeLine” 其实动画的本质就是在每一定时间间隔内显示一帧图像,当这个间隔较短的时候人眼就感觉不出来了,觉得看到的是连续的影像。Qt为开发动画效果的人员提供了一个很好...
  • zhx6044
  • zhx6044
  • 2013年04月18日 16:43
  • 1328

Qt动画效果的幕后英雄:QTimeLine

其实动画的本质就是在每一定时间间隔内显示一帧图像,当这个间隔较短的时候人眼就感觉不出来了,觉得看到的是连续的影像。Qt为开发动画效果的人员提供了一个很好的时间控制类QTimeLine.     QT...
  • imxiangzi
  • imxiangzi
  • 2015年11月20日 23:11
  • 379

深入浅出理解QTimeLine类

最近需要有动画方面配合时间间隔触发QGraphicsView框架的需求,意外找到了一个Qt中很实用的时间类QTImeLine,现在让我们一起来学习一下它。...
  • aysycd
  • aysycd
  • 2014年05月23日 14:27
  • 439

QML学习:QML文件当做组件使用

QML学习:QML文件当做组件使用 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 参考文档> 环境: 主机:WIN7 开发环境:...
  • jdh99
  • jdh99
  • 2013年10月05日 10:14
  • 10559

QML alias别名使用

使用QML实现一个自定义按钮,如下: Rectangle{ width: 300;height: 300 Rectangle { id:button_type ...
  • DEV_linux
  • DEV_linux
  • 2015年11月19日 15:32
  • 3341

【Qt开发】qml组件下拉列表的实现(一)

由于ComboBox需要定制,于是根据已有的的例子,自己重写了一下该控件的交互和样式。主要修改的地方有两点:(1)当鼠标离开下拉区域时,下拉列表将自动收回。不过可能实现的效果不是很好,当鼠标滑动速度较...
  • moxiaomomo
  • moxiaomomo
  • 2013年01月09日 00:00
  • 9718

QML画图-Canvas画基本图形

1.canvas画矩形   a.无路径画法     ctx.fillRect(200,100,50,40);    //填充     ctx.strokeRect(200,100,50,40);  /...
  • u012419303
  • u012419303
  • 2015年07月06日 10:47
  • 3031

QML概念及框架--继承JavaScript

QML推荐使用属性绑定和现有的QML元素来创建界面。为了允许执行更高级的行为,QML紧密集成了必要的JavaScript代码。QML中提供的JavaScript环境比在网页浏览器中的更严格。在QML中...
  • u012419303
  • u012419303
  • 2015年05月21日 20:16
  • 1682
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深入浅出理解QTimeLine类
举报原因:
原因补充:

(最多只允许输入30个字)