QTimeLine类提供了控制动画的时间轴。

类型:enum CurveShape{EaseInCurve,EaseOutCurve,EaseInOutCurve,LinearCurve,SineCurve,CosineCurve}闲散的曲线,线性曲线和sin,cos曲线。

enum Direction{Forward,Backward}方向前和后。

enum State{NotRunning,Paused,Running}运行,停止和暂停。

公共槽:void resume()接收恢复信号,void setCurrentTime(int msec)接收当前时间信号,void setPaused(bool paused)接收当前暂停信号,void start()接收开始信号,void stop()接收停止信号,void toggleDirection()接收触发方向信号。

信号:void finished()发送完成信号,void frameChanged(int frame)发送帧改变信号,void stateChanged(QTimeLine::State newState)发送状态改变信号,void valueChanged(qreal value)发送值改变信号

重载函数:virtual void timerEvent(QTimeEvent *event)

详细描述:调用一个定期的槽使得GUI控制动画化是非常普遍的。你可以根据它的持续时间,化成毫秒作为参数传递给QTimeLine的构造函数,该参数表明了这个动画运行的时间长度。然后使用setFrameRange()这个函数来设置适合这个范围的帧。最后发送frameChanged()信号给一个合适的widget槽来改变该widget的动画效果。当你开始调用start(),QTimeLine会进入运行状态,并且定期的有规律的发射frameChanged()信号,使得该信号连接到widget的属性值在你的帧范围内从低到高以一个稳定的速度增长。你也可以使用setUpdatInterval()函数明确指定更新的间隔。完成时,QTimeLine进入NoRunning状态,并且发射finished()信号。

Example:

progressBar = new QProgressBar(this);
progressBar->setRange(0, 100); // Construct a 1-second timeline with a frame range of 0 - 100
QTimeLine *timeLine = new QTimeLine(1000, this);
timeLine->setFrameRange(0, 100);
connect(timeLine, SIGNAL(frameChanged(int)), progressBar, SLOT(setValue(int))); // Clicking the push button will start the progress bar animation
pushButton = new QPushButton(tr("Start animation"), this);
connect(pushButton, SIGNAL(clicked()), timeLine, SLOT(start()));
以上程序使用QTimeline 设置一个FrameRange,然后发送一个frameChanged信号给progressBar,设置该进程的值。并且用一个push
-Button的clicked()信号触发QTimeLine的start()槽。
你也可以在Graphics View 框架之中使用QTimeLine动画,QGraphicsItemAnimation类就利用timeline来对QGraphicsItems做动画。
一旦默认的timeline运行起来,从开始到结束,这个过程你必须重新调用start()才能够再次运行,为了能够使得timeline可以循环,你可以调
用setLoopCount()这个函数,传递timeline可以运行的次数。运行的方向也可以被改变,如果要让timeline回退运行,只要调用setDirect
-ion()这个函数即可。你还可以调用setPaused()这个函数在timeline运行的过程中暂停timeline,为了达到交互控制,使用setCurrent-
Time()函数能够被使用,可以直接设置timeline的位置。
在标准的widget中,帧接口是非常有用的,但是QTimeLine能够被用来控制任何类型的动画。这个功能的核心是valueForTime()这个函
数,该函数通过给定时间生成一个0-1的值,这个值通常用来描述动画的步数。0是该动画的第一部分而1是该动画的最后一个部分。运行起来
的时候,QTimeLine调用valueForTime()生成该值(0-1),并且发射一个valueChanged()信号,默认地,valueForTime运用一种插值
算法来生成该值。你也可以使用setCurveShape()函数来选择一些类的预定义timeline算法。

默认情况下,QTimeLine 使用EaseInOut曲线形状,提供了一种慢速的增长方式。在典型的timeline当中,你可以使用valueForTime()
这个时候QTimeLine的曲线形状属性会被忽略。

QTimerLine类学习的更多相关文章

  1. 【转】Date类学习总结(Calendar Date 字符串 相互转换 格式化)

    原文网址:http://www.blogjava.net/jerry-zhaoj/archive/2008/10/08/233228.html Date类学习总结 1.计算某一月份的最大天数 Cale ...

  2. System类学习笔记

    最近在学习源码的过程中发现:很多深层次的代码都用到了一个类System类,所以决定对System类一探究竟 本文先对System类进行了剖析,然后对System类做了总结 一.首先对该类的中的所有字段 ...

  3. Date类学习总结(Calendar Date 字符串 相互转换 格式化)

    Date类学习总结 1.计算某一月份的最大天数 Calendar time=Calendar.getInstance();time.clear();time.set(Calendar.YEAR,yea ...

  4. Scala中的类学习

    Scala中的类学习 从java了解类的情况下,了解Scala的类并不难.Scala类中的字段自动带getter和setter方法,用@BeanProperty注解生成javaBean对象的getXX ...

  5. zt C++ list 类学习笔记

    C++ list 类学习笔记 分类: C++ 2011-09-29 00:12 7819人阅读 评论(0) 收藏 举报 listc++iteratorvectorcconstructor 双向循环链表 ...

  6. Properties工具类学习

    Properties类学习 1.定义 Properties,java.utils包下的一个工具类,主要用于读取Java的配置文件.各种语言都有自己所支持的配置文件,配置文件中很多变量是经常变动的. 这 ...

  7. RandomAccessFile类学习

    RandomAccessFile类学习 RandomAccessFile是io包的类,从Object直接继承而来,只可以对文件进行操作,可以对文件进行读取和写入. 当模式为r:当文件不存在时会报异常: ...

  8. Task类学习教程—组合任务ContinueWith

    Task类学习教程-组合任务.ContinueWith 一.简介 通过任务,可以指定在任务完成之后,应开始运行之后另一个特定任务.ContinueWith是Task根据其自身状况,决定后续应该作何操作 ...

  9. QPainter类学习

    详细描述: QPainter类提供了许多高度优化的函数去做大部分的GUI绘制工作.它可以画从简单的线到复杂的形状.通常情况下,QPainter的使用是在widget当中的painter事件使用.记得在 ...

随机推荐

  1. Cloneable接口分析

    Cloneable接口是一个标记接口,也就是没有任何内容,定义如下: package java.lang; pubilc interface Cloneable { } 这里分析一下这个接口的用法 c ...

  2. 10 款强大的JavaScript图表图形插件推荐

    转自:http://www.iteye.com/news/24535 网上有很多用于绘制图表图形的免费JavaScript插件和图表库,这类插件大量出现的原因,一是人们不再依赖于Flash,二是浏览器 ...

  3. SqlServer将数据库中的表复制到另一个数据库

    前述: 文章来自百度经验 操作: 在使用SqlServer的过程中,我们可能需要将表从一个数据库复制到另一个数据库中,今天,为大家介绍这种操作的具体方法及步骤. 复制表结构 1 首先,打开并连接Sql ...

  4. Dapper inner join

    Dapper中的一些复杂操作和inner join应该注意的坑 上一篇博文中我们快速的介绍了dapper的一些基本CURD操作,也是我们manipulate db不可或缺的最小单元,这一篇我们介绍下相 ...

  5. 学生选课系统数据库SQL语句考试题

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...

  6. Solr4.8.0源码分析(13)之LuceneCore的索引修复

    Solr4.8.0源码分析(13)之LuceneCore的索引修复 题记:今天在公司研究elasticsearch,突然看到一篇博客说elasticsearch具有索引修复功能,顿感好奇,于是点进去看 ...

  7. jQuery插件infinitescroll参数【无限翻页】

    转自:http://blog.163.com/penglie_520/blog/static/19440505020127255319862/ infinite-scroll-jquery 参数详解: ...

  8. IIS 内部运行机制及Asp.Net执行过程详解

    一直以来对一个Asp.net页面穿过IIS后就返回给浏览器一个HTML页面感觉很是神奇.虽然做技术这么长时间了,也曾经大致了解过一点来龙去脉,但是如果你真的问起我比较详细的过程,我还真的回答不上来,好 ...

  9. ionic中使用Cordova Uglify 压缩js与css

    参照:https://www.npmjs.com/package/cordova-uglify 安装:npm install cordova-uglify 安装完成之后,打开: hooks/uglif ...

  10. 使用Pull解析器生成XML文件和读取xml文件

    有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...