欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611
其实动画的本质就是在每一定时间间隔内显示一帧图像,当这个间隔较短的时候人眼就感觉不出来了,觉得看到的是连续的影像。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)该函数用于控制更新动画的时间间隔。
相当于设定了时间总数和单次时间的QTimer
是对QTimer的扩展,封装
另外提醒一下,有时候对间隔的设置可能达不到预定的次数,因为程序的执行效率无法达到这样的次数。所以对次数的设置 要合理!
举个例子吧:
m_timeLine = new QTimeLine(1000);
m_timeLine->setFrameRange(0,100);
m_timeLine->setUpdateInterval(1);
这样的定时器,在1000ms内,只能重复执行了56次(有时候是55次).....以后用的时候注意!
补充:setFrameRange和setUpdateInterval没有直接关系,第一个是活动范围,后面的是间隔范围;使用的时候区分。
m_timeLine->setFrameRange(0,100);
m_timeLine->setUpdateInterval(1);
欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611
欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611