QT 幀圖片播放

1.大體思路是使用qlabel 加載圖片,使用qtimer 定時,timeout 時更新圖片

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QTimer>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    path = "image/";
    num = GetFileList(path).size();
    i=j=k=l=0;
    time=new QTimer();
    connect(time,SIGNAL(timeout()),this,SLOT(showOnePic()));
    connect(time,SIGNAL(timeout()),this,SLOT(showTwoPic()));
    connect(time,SIGNAL(timeout()),this,SLOT(showThreePic()));
    connect(time,SIGNAL(timeout()),this,SLOT(showFourPic()));
}

Widget::~Widget()
{
    delete ui;
}

void Widget::showOnePic()
{
    QImage image;
    fileinfo = GetFileList(path).at(i);
    if(!image.load(fileinfo.filePath()))
        qDebug()<<"fail!";
    ui->label->setPixmap(QPixmap::fromImage(image));   
    i++;
    if(i == num)
        i=0;
}

void Widget::showTwoPic()
{
    QImage image;
    fileinfo = GetFileList(path).at(j);
    if(!image.load(fileinfo.filePath()))
        qDebug()<<"fail!";
    ui->label_2->setPixmap(QPixmap::fromImage(image));
    j++;
    if(j == num)
        j=0;
}

void Widget::showThreePic()
{
    QImage image;
    fileinfo = GetFileList(path).at(k);
    if(!image.load(fileinfo.filePath()))
        qDebug()<<"fail!";
    ui->label_3->setPixmap(QPixmap::fromImage(image));
    k++;
    if(k == num)
        k=0;
}

void Widget::showFourPic()
{
    QImage image;
    fileinfo = GetFileList(path).at(l);
    if(!image.load(fileinfo.filePath()))
        qDebug()<<"fail!";
    ui->label_4->setPixmap(QPixmap::fromImage(image));
    l++;
    if(l == num)
        l=0;
}

void Widget::showPic()
{
    QImage image;
    path = "/qt_wj/showPic/image";
    qDebug()<<GetFileList(path).size();
    for(int i=0;i<GetFileList(path).size();i++){
        fileinfo = GetFileList(path).at(i);
        qDebug()<<fileinfo.filePath();
        //qDebug()<<fileinfo.fileName();
    if(!image.load(fileinfo.filePath()))
        qDebug()<<"fail!!!!!!!!!!!!!!";
    else{
        qDebug()<<"success";
        ui->label->setPixmap(QPixmap::fromImage(image));
        //sleep(1);
        //ui->label->clear();
    }

    }
}

QFileInfoList Widget::GetFileList(QString path)
{
    QDir dir(path);
    QFileInfoList file_list = dir.entryInfoList(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
    QFileInfoList folder_list = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);

    for(int i = 0; i != folder_list.size(); i++)
    {
         QString name = folder_list.at(i).absoluteFilePath();
         QFileInfoList child_file_list = GetFileList(name);
         file_list.append(child_file_list);
    }

    return file_list;
}

void Widget::on_pushButton_clicked()
{
    time->start(200);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章