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

Qt动态显示图片(有点问题请高手指点!!)

2013-05-20 19:36 459 查看
我整了好多天啊, 想弄一个FL2440启动的动态logo,这几天吧我整惨了。

MP3的解码高定了,但是又有一个动画的和内存问题了,先解决动画。

我用的是连续播放图片的形式。但是在用的时候有点问题,希望哪位高手能帮忙解决或者符代码。

我的这个能现实。

这是main.cpp

#include <QApplication>

#include "picture.h"

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

MainWindow wmain;

wmain.show();

return app.exec();

}

第二个是picture.h

#include <QLabel>

#include <QMovie>

#include <QTimer>

#include <QGridLayout>

#include <QDialog>

#include <QRect>

#include <QPixmap>

class MainWindow:public QDialog

{

Q_OBJECT

public:

MainWindow();

QLabel *label;

QMovie *movie ;

QTimer *timer;

QGridLayout *layout;

QRect *movRect;

QPixmap *mr;

private slots:

void painter();

};

第三个是picture.cpp

#include "picture.h"

int i = 0;

QString imag[4]={"./1.png", "./2.png", "./3.png", "./bg.png"};

MainWindow:: MainWindow()

{

setWindowTitle(tr("picture"));

layout= new QGridLayout(this);

timer = new QTimer(this);

timer->start(1000); //定时1秒改变图片

connect(timer, SIGNAL(timeout()), this, SLOT(painter()) );

}

void MainWindow::painter()

{

mr = new QPixmap(imag[i]);

int width = mr->width ();

int height = mr->height ();

movRect = new QRect(0, 0, width, height);

QRect rect = this->geometry ();

rect.setWidth (width);

rect.setHeight (height);

rect.setX (0);

rect.setY (0);

this->setGeometry (rect);

this->repaint();

label = new QLabel();

movie = new QMovie(imag[i++]);

layout->addWidget(label, 0, 0);

label->setMovie(movie);

movie->start();

label->show();

if(i == 4)

{ i=0;

//timer->stop();

//label->setMovie(NULL);

}

}

将图片放在与代码同一个目录

然后使用命令

$qmake -project -o picture.pro

$qmake picture.pro

$make

$./picture

就可以看见图片现实了。在linux下是这样,在window是下就更简单了

建立工程,将文件添加,编译就OK了

如果有高手飘过,能否帮忙解决现实的时候有重叠问题啊?????
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: