您的位置:首页 > 编程语言 > Qt开发

QT学习笔记-24.使用QTimeLine

2015-11-20 23:10 483 查看
一个简单的代码如下:

#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(0, 100);

// Construct a 5-second timeline with a frame range of 0 - 100

timeLine = new QTimeLine(5000, 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()));

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: