码迷,mamicode.com
首页 > 其他好文 > 详细

QT动画时间轴控制 QTimeLine

时间:2019-08-11 23:13:06      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:time   nec   orm   实现   定时   递增   例子   back   ram   

QTimeLine类提供用于控制动画的时间轴

比如控制进度条的增长,图片,窗口的旋转,平移等等

QTimeLine有一个frameChanged(int)信号

当调用QTimeLine::start()

frameChanged(int val)里面的val值会从0到50开始递增

(前提是需要设置范围如timeLine->setFrameRange(0, 50); 也需要设置QTimeLine变化的时间timeLine = new QTimeLine(1000, this)

可以在槽函数中接受这个val值

一般使用如:

transform.translate(a, b);

transform.rotate(c);

transform.scale(d, e);

以上(a,b,c,d,e)都可以通过val的值代替或者和val做某种运算后得到

 

QTransform  QTransform类指定坐标系统的2D转换

其中  translate() rotate() 俩函数组合实现图片旋转 , translate()设置旋转中心 , rotate() 实现旋转)

translate(设置坐标中心), scale(设置缩放比例), shear(设置b变形比例), rotate (设置旋转角度)

 

 

 

 

例子: 当点击按钮时进度条的值会从0100使用时间是1

QProgressBar *progressBar = new QProgressBar (this);

progressBar->setRange(0, 100);

 

  // 指定变化目标是谁以及变化的时间

  QTimeLine *timeLine = new QTimeLine(1000, this);//设置变化时间是1秒

  //指定在1秒内变化的范围 如果是(0,50)则1秒内进度条从0增加到50

  //timeLine->setFrameRange(0, 50);

 

  //设置动画的次数

  timeLine->setLoopCount(3);//进度条加载3次

  //设置动画的时间快慢,范围以某种速度增长(先快后慢/或者先慢后快)

  timeLine->setCurveShape(QTimeLine::EaseInCurve);

  //设置动画的方向(如进度条是从0增到100还是100降到0)

  timeLine->setDirection(QTimeLine::Backward);

  //绑定信号来改变进度条的值

  connect(timeLine, SIGNAL(frameChanged(int)), progressBar, SLOT(setValue(int)));

  //此按钮用来调用QTimeLine::start()函数

 

 //需要指定开始,一般触发式,或者使用定时器

 QPushButton *pushButton = new QPushButton(tr("Start animation"), this);

  connect(pushButton, SIGNAL(clicked()), timeLine, SLOT(start()));

 

 //这个可以切换时间轴的方向,也就是动画运动的方向

 timeLine-> toggleDirection();

QT动画时间轴控制 QTimeLine

标签:time   nec   orm   实现   定时   递增   例子   back   ram   

原文地址:https://www.cnblogs.com/that-boy-done/p/11336959.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!