在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一致。