qt播放gif动态图片效果(不利用mplayer)

本文由 @lonelyrains 出品,转载请注明出处。 
文章链接: http://blog.csdn.net/lonelyrains/article/details/6730118


需要准备的:.gif文件,qmake,make,相应的编译器(g++、arm-linux-g++),ACDSee

从gif分解成多个jpg文件:

ACDSee方式打开.gif文件,编辑,另存为jpg文件。经此三步,会变成多个jpg文件,本例程中的gif分解为11个jpg文件

代码:

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    map = new QPixmap;
    bool ok = map->load("image/emotion_p01.jpg");

    /*if(ok)
        qDebug()<<"load map success";
    else qDebug()<<"load map fail";*/

    label = new QLabel();
    label->setPixmap(*map);

    label->show();
    timer = new QTimer;
    connect(timer,SIGNAL(timeout()),this,SLOT(changepic()));
    timer->start(100);
}

Widget::~Widget()
{
    delete ui;
    timer->stop();
}

void Widget::changepic()
{
    static int picnum = 0;
    picnum = picnum%11+1;

    char picname[20];
    sprintf(picname,"image/emotion_p%02d.jpg",picnum++);

    //qDebug()<<picname;

    QString pic=QString(picname);

    map->load(pic);
    label->setPixmap(*map);
    //update();
    label->show();//关闭label之后会继续弹出
    //update();
}

/*有两点需要注意*/
/*
 1、.JPG虽然在windows下不区别于.jpg,f9上也可成功运行,但是在嵌入式linux中,需一致,不然导入图片失败
 2、使用qDebug时,会导致页面不能即使更新,看不到动态效果,即使用了update
*/

你可能感兴趣的:(timer,UI,qt,编译器,Signal)