深入浅出理解QTimeLine类
网上找了下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!
深入浅出理解QTimeLine类的更多相关文章
- 深入浅出理解c++虚函数
深入浅出理解c++虚函数 记得几个月前看过C++虚函数的问题,当时其实就看懂了,最近笔试中遇到了虚函数竟然不太确定,所以还是理解的不深刻,所以想通过这篇文章来巩固下. 装逼一刻: 最近,本人思想发 ...
- Python之美[从菜鸟到高手]--深刻理解原类(metaclass)
本来想自己写这篇文章的,可当我读了这篇文章http://blog.jobbole.com/21351/,我打消了这个念头,因为肯定写的没有人家的好,说的通俗易懂,面面俱到.就厚着面皮修改下格式,测试下 ...
- 别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析【JVM篇二】
目录 1.什么是类的加载(类初始化) 2.类的生命周期 3.接口的加载过程 4.解开开篇的面试题 5.理解首次主动使用 6.类加载器 7.关于命名空间 8.JVM类加载机制 9.双亲委派模型 10.C ...
- Java基础系列2:深入理解String类
Java基础系列2:深入理解String类 String是Java中最为常用的数据类型之一,也是面试中比较常被问到的基础知识点,本篇就聊聊Java中的String.主要包括如下的五个内容: Strin ...
- 跟着刚哥梳理java知识点——深入理解String类(九)
一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class String implements java.io.Ser ...
- 初识Hibernate之理解持久化类
上一篇文章我们简单介绍了Hibernate相关的一些最基本的文件及其作用,并在最后完整的搭建了Hibernate的运行环境,成功的完成了与数据库的映射.但是至于其中的一些更加细节的地方并没有 ...
- 关于理解python类的小题
今天看了python部落翻译的一篇<一道python类的小题>文章,感觉挺有启发性,记录下来: print('A') class Person(object): print('B') de ...
- 深入浅出理解 TCP/IP 协议 (一)
文章转自:https://www.cnblogs.com/onepixel/p/7092302.html TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入 ...
- SSM-SpringMVC-04:SpringMVC深入浅出理解HandleMapping(源码刨析)
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先从概念理解,从中央调度器,携带参数request,调度到HandleMapping处理器映射器,处理器映射器 ...
随机推荐
- Unity 随机数的使用
脚本语言:C# 一个比较常用的例子是游戏中的主角碰到场景中的NPC时,NPC会随机做出反应,例如有50%几率来友好的致敬,25%几率走开,20%几率反身攻击和%%的几率赠送礼物. 创建一个NPCTes ...
- Git for Windows安装和基本设置
1.下载地址: http://msysgit.github.io/ 2.下载完成后安装,安装路径自己选择,其他的选项参照下图: 其他的一步一步往下即可,最后Finish完成安装: 3.配置github ...
- 动态规划(斜率优化):SPOJ Commando
Commando You are the commander of a troop of n soldiers, numbered from 1 to n. For the battle ahead, ...
- Course Schedule ——LeetCode
There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ...
- HDOJ(HDU) 2201 熊猫阿波的故事(概率问题)
Problem Description 凡看过功夫熊猫这部电影的人都会对影片中那只憨憨的熊猫阿波留下相当深的印象,胖胖的熊猫阿波自从打败了凶狠强悍的雪豹泰龙以后,在和平谷的地位是越来越高,成为谷中第一 ...
- maven上传自定义jar到本地仓库
mvn install:install-file -Dfile=D:/baidu/ueditor-1.1.1.jar -DgroupId=com.baidu.ueditor -Dartifact ...
- zznu 1073: 海军节上的鸣炮声计算
这是个一不留神就会出错的题目,首先大家可以想到在同一时间可能会有多个炮同时发射,不过观众只能听到一响,所以需要注意! 而且刚开始的时候所有的船都会发射一发,输入的a, b, c,都是时间间隔,
- 第一节:Scrapy开源框架初探
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 具体开发流程如下: 一.确定待抓取网站 当您需要从某 ...
- 一篇文章看懂spark 1.3+各版本特性
Spark 1.6.x的新特性Spark-1.6是Spark-2.0之前的最后一个版本.主要是三个大方面的改进:性能提升,新的 Dataset API 和数据科学功能的扩展.这是社区开发非常重要的一个 ...
- VS 制作安装包小窥
难得忙里偷闲,看到有关VS制作安装包,按下文小试一把,还行,比不上Installshield. 首先在打开 VS2010 > 文件 >新建项目 创建一个安装项目 XXX 在“目 ...