1. 程式人生 > >在ui介面新增Qlabel控制元件,在QLabel中使用QMovie播放gif

在ui介面新增Qlabel控制元件,在QLabel中使用QMovie播放gif

#include "WaitDialog.h"
#include<QPainter>
#include<QMovie>


WaitDialog::WaitDialog(QWidget *parent, QString fileName, int picWidth, int picHeight)
    : QWidget(parent)
{
    ui.setupUi(this);


    m_picWidth = picWidth;
    m_picHeight = picHeight;
    this->setFixedSize(m_picWidth,m_picHeight);
    this->setWindowFlags(Qt::Dialog|Qt::FramelessWindowHint);
    this->setAutoFillBackground(true);
    this->setContentsMargins(0,0,0,0);
    ui.label->setContentsMargins(0,0,0,0);
    QMovie*movie=new QMovie(fileName);
    ui.label->setMovie(movie);
    movie->start();
}


WaitDialog::~WaitDialog()
{

}

gif圖片在release下不顯示問題:

  在Qt的目錄下有plugins/imageformats這樣一個目錄,裡面有qgif.dll,qjpeg4.dll等動態連結庫,當在安裝過QT的機器上,這些庫能被成功指定呼叫,所以本機gif能正常顯示;

  當是移到其他沒有安裝QT的機器時,因為找不到這些庫檔案,所以導致圖片無法顯示.

解決方案如下:

  在exe應用程式目錄下建立plugins/imageformats資料夾,將需要的影象支援外掛拷貝進去;

  在程式原始檔main.cpp 的QApplication a(argc, argv);一行前新增如下程式碼QApplication::addLibraryPath("./plugins");

另:

假如使用資源圖片顯示,例如:

QMovie* movie = new QMovie(":/display/Resources/loading.gif"); //注意此處路徑,可開啟qrc 檢視圖片檔案的 resource url,路徑需與url一致。