QT学习笔记-24.使用QTimeLine

转载 2015年11月20日 23:10:59

一个简单的代码如下:

#include <QtGui/QApplication>
#include <QtGui>
#include <math.h>
int main(int argc, char *argv[])
{
 QApplication a(argc, argv);
 QGraphicsItem *ball = new QGraphicsEllipseItem(0,0,20,40);
 QTimeLine *timer = new QTimeLine(15000);
 timer->setFrameRange(0,100);
 QGraphicsItemAnimation *animation = new QGraphicsItemAnimation;
 animation->setItem(ball);
 animation->setTimeLine(timer);
 for(int i = 0; i < 600; ++i)
 animation->setPosAt(i / 600.0, QPointF(i, i));
 QGraphicsScene *scene = new QGraphicsScene();
 scene->setBackgroundBrush(QBrush(Qt::blue));
 scene->setSceneRect(0,0,250,250);
 scene->addItem(ball);
 QGraphicsView *view = new QGraphicsView(scene);
 view->setBackgroundBrush(QBrush(Qt::red));
 view->show();
 timer->start();
 return a.exec();
}

另外一个例子如下:
#ifndef TIMELINE_H
#define TIMELINE_H
#include 
<QtGui/QWidget>
#include 
<QVBoxLayout>
#include 
<QTimeLine>
#include 
<QProgressBar>
#include 
<QPushButton>

class timeline : public QWidget
{
    Q_OBJECT
public:
    timeline(QWidget 
*parent = 0);
    
~timeline();
private:
    QPushButton 
*pushButton;
    QTimeLine 
*timeLine;
    QProgressBar 
*progressBar;
    QVBoxLayout 
*layout;
};

#endif // TIMELINE_H

#include 
"timeline.h"

timeline::timeline(QWidget 
*parent):QWidget(parent)
{
    layout
= new QVBoxLayout(this);
    progressBar 
= new QProgressBar(this);
    progressBar
->setRange(0100);

    
// Construct a 5-second timeline with a frame range of 0 - 100
    timeLine = new QTimeLine(5000this);
    timeLine
->setFrameRange(0100);
    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()));
    layout
->addWidget(progressBar);
    layout
->addWidget(pushButton);
    setLayout(layout);
}

timeline::
~timeline()
{
   
// No need to delete any QObject that got proper parent pointer.
}

简单的说 QTimeLine就是一个带有线程的对象,通过设置持续时间和帧数来控制动画



FROM: http://www.cppblog.com/gaimor/archive/2011/09/07/155302.html

Qt之QTimeLine

QTimeLine 类提供了用于控制动画的时间轴,通常用于通过定期调用一个槽函数来动画一个 GUI 控件。相信了解动画的人对帧应该不陌生,可以把一个动画想象成由很多张静态画面组成,而每一个画面就是一帧...
  • u011012932
  • u011012932
  • 2016年11月04日 10:59
  • 3011

Qt浅谈之五十界面自定义

一、简介       Qt自带的界面不利于样式的调整和美化,自定义界面便于设计风格。 二、详解 1、代码 (1)pagenumbercontrol.h#ifndef PAGENUMBERC...
  • taiyang1987912
  • taiyang1987912
  • 2016年04月10日 23:02
  • 5404

TimeLine 应用程序

  • 2014年04月20日 18:49
  • 6.77MB
  • 下载

qt 实现停靠窗口 效果

我创建了一个class继承QWidget,实现enterEvent和leaveEvent两个函数,我实现的效果是这样,一开始这个窗口显示出来,但只显示一半,就是move(-width/2),一旦有鼠标...
  • zhangbinsijifeng
  • zhangbinsijifeng
  • 2015年06月25日 13:43
  • 733

Qt之窗口动画(下坠、抖动、透明度)

简述前面几节中我们介绍了关于动画的基本使用,有属性动画、串行动画组、并行动画组。这节我们来实现一些特效,让交互更顺畅。简述 示例 效果 源码 更多参考示例下面,我们以geometry、pos、wind...
  • u011012932
  • u011012932
  • 2016年07月12日 19:10
  • 12693

QT动画

QT动画——TimeLine 其实动画的本质就是在每一定时间间隔内显示一帧图像,当这个间隔较短的时候人眼就感觉不出来了,觉得看到的是连续的影像。Qt为开发动画效果的人员提供了一个很好的时间控制类...
  • alada007
  • alada007
  • 2012年08月02日 13:21
  • 7422

【Qt5开发及实例】27、获得文件的信息

fileinfo.h /** * 书本:【Qt5开发及实例】 * 功能:获得文件的信息 * 文件:fileinfo.h * 时间:2015年2月4日17:23:38 * 作者:cutter_poin...
  • cutter_point
  • cutter_point
  • 2015年02月27日 21:47
  • 803

QT-【转】2D编程

来源:http://www.cnblogs.com/lucas-hsueh/p/3737655.html Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕上和绘图·设备上进...
  • u011430225
  • u011430225
  • 2016年09月21日 16:49
  • 632

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

 其实动画的本质就是在每一定时间间隔内显示一帧图像,当这个间隔较短的时候人眼就感觉不出来了,觉得看到的是连续的影像。Qt为开发动画效果的人员提供了一个很好的时间控制类QTimeLine. QTimeL...
  • cuteqt
  • cuteqt
  • 2009年06月28日 18:09
  • 7243

QTimeLine 时间轴类 实现动画

QTimeLine 是一个提供了控制动画的时间轴的类。通常都是通过调用槽函数来控制动画的显示。          QTimeLine在构造函数中,你可以传递一个毫秒级的参数,设定动画的运行时间。如:...
  • zhangbinsijifeng
  • zhangbinsijifeng
  • 2015年06月25日 13:47
  • 1313
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QT学习笔记-24.使用QTimeLine
举报原因:
原因补充:

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