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

转载 2015年11月20日 23:11:32

其实动画的本质就是在每一定时间间隔内显示一帧图像,当这个间隔较短的时候人眼就感觉不出来了,觉得看到的是连续的影像。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余行,想必用不了你多长时间即可读通。



FROM:  http://blog.chinaunix.net/uid-20382483-id-3515058.html

Qt使用QGraphicsView实现滑动窗体效果 .

源码已上传至CSDN,http://download.csdn.net/source/2808505   QGraphicsView用来显示一个滚动视图区的QGraphicsScene内容。QGr...
  • imxiangzi
  • imxiangzi
  • 2016年03月27日 00:21
  • 1231

iOS自定义UICollectionViewlayout仿英雄联盟选择皮肤立体轮播效果展示

个人感觉CollectionView过于强大,基本什么界面都能用他来完成需求,只是如果自定义Layout的时候可能性能开 销大。如果是普通的需求,他和tableView并没有多大的区别,同样都是通过d...
  • Deft_MKJing
  • Deft_MKJing
  • 2016年08月16日 11:14
  • 4833

Qt浅谈之二十三QGraphicsItem旋转动画

一、简介        QGraphicsItem中水平动画使用QGraphicsItemAnimation和QTimeLine即可实现,而旋转动画须使用QTimeLine和QTransform来实...
  • taiyang1987912
  • taiyang1987912
  • 2015年04月10日 17:29
  • 7701

是谁?让它甘心做强大背后的幕后英雄

一个伟大的成功后面,有很多默默无闻的支持。在IM这个烈火骄阳的领域内,除了那些显性的,声名赫赫的品牌之外,还有一个一直专注于B2B电子商务平台,为客户定制即时通讯产品和解决方案的隐形将军,它的名字叫商...
  • wenjie1029
  • wenjie1029
  • 2011年10月08日 14:40
  • 187

Android中的幕后英雄Service

Android中有时候会有种感觉,就是觉得Service和Thread的功能似乎很相似。   相似点:它们都是可以独立运行的对象,而且都在幕后运行,没有界面。   不同之处:Android系统根据...
  • adayabetter
  • adayabetter
  • 2015年01月09日 13:09
  • 304

幕后英雄的用武之地 ——浅谈Java内部类的四个应用场景

幕后英雄的用武之地                                                         ——浅谈Java内部类的四个应用场景  转自:http:...
  • wyn_HELLOWORLD
  • wyn_HELLOWORLD
  • 2013年05月30日 10:20
  • 552

4G智能天线的幕后英雄

业界翘首以待的4G牌照终于发放了。工信部为三大运营商均颁发了TD-LTE制式的4G牌照。具体频段分配为:中国移动获得1880-1900MHz、2320-2370MHz、2575-2635MHz,中国联...
  • qizu
  • qizu
  • 2013年12月17日 14:12
  • 594

机柜系统:数据和业务的幕后英雄

谈起机柜,它可能只是数据中心一个并不起眼的设备,也很少受到关注。但是数据中心的服务器、存储、交换和安全等设备都需要安装在机柜中,通过机柜为之提供电、冷却等基础服务;也是数据机房的重要组成部分。事实上,...
  • swingwang
  • swingwang
  • 2017年03月11日 21:08
  • 563

证券基础--风险投资《阿凡达》的幕后英雄

1986年上海和深圳被定位股份制改革试点城市 1992股份制被再次点燃 红庙子街头来自全国的投资者进行股票交易 散户手拿股票,进行买卖 为什么热衷股票交易,为什么有的一下子就亏了呢 有些股票上市了,有...
  • jianglai3289
  • jianglai3289
  • 2015年10月04日 12:35
  • 234

幕后英雄的用武之地——浅谈Java内部类的四个应用场景

幕后英雄的用武之地——浅谈Java内部类的四个应用场景 标签: java数据库连接池datatemplatestringclassinterface 2006-02-22 20:09 11...
  • zs064811
  • zs064811
  • 2016年04月18日 14:13
  • 996
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt动画效果的幕后英雄:QTimeLine
举报原因:
原因补充:

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