一、资源下载地址
https://www.aliyundrive.com/s/jBU2wBS8poH
本项目路径:项目->免费->Gif播放器(包含整个工程源码,vs2019打开即可编译运行)
二、项目介绍
1、本项目使用Vs2019+Qt库来简易开发一个Gif播放器,Qt项目简易开发环境参考文章:
https://blog.csdn.net/liangqinruanjian/article/details/119450953?spm=1001.2014.3001.5502
本文主要论述功能实现细节。
2、本项目完成的功能如下:
(1)、支持双击Gif文件使用本软件打开进行播放。
(2)、软件支持菜单栏打开文件进行播放。
(3)、支持拖放Gif文件到软件内进行播放。
(4)、软件支持循环播放打开的Gif文件。
(5)、使用左右方向键来切换当前打开文件所在目录的所有图片文件。
(6)、Qt线程的使用。
3、效果展示:
三、项目开始
1、准备工作
搭建一份Qt项目简易开发环境,需要注意的是本项目需要Qt的imageformats库。
2、项目思路
菜单栏打开文件、拖拽文件到软件内、双击文件打开可以认为是要获取当前要播放的文件名以及文件所在目录的所有图片文件名,而左右方向键切换则是要更改当前要播放的文件名。我们可以在用户操作后,使用成员变量记录当前播放的文件名以及一个文件名列表和当前播放文件在列表中的位置。然后开启一个线程来循环获取当前需要播放的文件名来读取文件进行播放。
3、界面设计
使用designer来设计我们的UI,增加一个菜单栏打开按钮和添加一个label来显示图像。最后对我们添加的控件进行布局,让label可以随着窗口缩放来自动缩放。如图所示:
4、当前播放文件名与文件名列表获取实现:
void GuiGifView::changeFileName(QString fileName)
{
//Qt获取的文件路径分隔符是/,编码是utf8
m_file_name = fileName;
m_file_change_flag = 1;
}
void GuiGifView::setFileName(QString fileName)
{
changeFileName(fileName);
//获取路径
QString fileDir = fileName.left(fileName.lastIndexOf("/") + 1);
//获取该路径下的图片文件
QDir dir(fileDir);
QStringList nameFilters;
nameFilters << "*.gif" << "*.jpg" << "*.png";
QStringList files = dir.entryList(nameFilters, QDir::Files|QDir::Readable, QDir::Name);
QList<QString>::Iterator it = files.begin(),itend = files.end();
int i = 0;
m_file_list.clear();
for (;it != itend; it++,i++