imxiangzi的专栏

不炼金丹不坐禅, 不为商贾不耕田. 闲来写就青山卖, 不使人间造业钱.

QT学习笔记-24.使用QTimeLine

一个简单的代码如下:

#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/动画
想对作者说点什么? 我来说一句

qt 一个有关时间线的使用代码

2011年07月21日 340KB 下载

没有更多推荐了,返回首页

不良信息举报

QT学习笔记-24.使用QTimeLine

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭