一、前言

使用 Qt 制作了一个简单的图片播放器,点击 "浏览按钮" 浏览图片所在目录,目录中的所有图片缩小图标和名称会显示在左侧的图片列表中,点击列表中的图片项,可以在右侧区域的标签上显示或播放 png、img、gif 等格式图片。示意图如下所示:

二、工程代码

具体代码如下:

头文件 imgPlayer.h

#ifndef IMGPLAYER_H
#define IMGPLAYER_H #include <QMainWindow>
#include <QFileDialog>
#include <QMovie>
#include <QDebug> namespace Ui {
class ImgPlayer;
} class ImgPlayer : public QMainWindow
{
Q_OBJECT public:
explicit ImgPlayer(QWidget *parent = nullptr);
~ImgPlayer(); private slots:
void on_openImgButton_clicked(); //浏览按钮-点击槽函数
void on_imgListWidget_clicked(const QModelIndex &index); //图片列表-点击槽函数 private:
Ui::ImgPlayer *ui; QString m_imgDirPath; // 图片所在目录的具体路径
}; #endif // IMGPLAYER_H

源文件 imgPlayer.cpp

#include "imgplayer.h"
#include "ui_imgplayer.h" ImgPlayer::ImgPlayer(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::ImgPlayer)
{
ui->setupUi(this);
} ImgPlayer::~ImgPlayer()
{
delete ui;
} //浏览按钮-点击槽函数
void ImgPlayer::on_openImgButton_clicked()
{
m_imgDirPath = QFileDialog::getExistingDirectory(this); // 获取图片所在目录的具体路径
ui->imgComboBox->addItem(m_imgDirPath); // 添加打开目录的绝对路径并显示
QDir dir(m_imgDirPath);
QFileInfoList fileInfoList = dir.entryInfoList(QDir::Files); // 获取目录下的文件 QString filePath; // 保存图片图片的绝对路径
// 在QListWidget中列出目录下的文件
for(int i=0; i<fileInfoList.count(); i++)
{
filePath.clear(); //清除上一次图片路径内容
filePath.append(m_imgDirPath + "/" + fileInfoList.at(i).fileName()); // 获得图片文件的绝对路径 if(fileInfoList.at(i).fileName() == "." || fileInfoList.at(i).fileName() == "..") // 跳过这两个隐藏目录
{
continue;
}
QListWidgetItem *item = new QListWidgetItem(QIcon(filePath), fileInfoList.at(i).fileName()); // 建立图片缩小图标
ui->imgListWidget->addItem(item); // 把图片缩小图标和名称显示在列表窗口中
}
} //图片列表-点击槽函数
void ImgPlayer::on_imgListWidget_clicked(const QModelIndex &index)
{
Q_UNUSED(index); QString imgPath = (m_imgDirPath + "/" + ui->imgListWidget->currentItem()->text()); if(imgPath.endsWith(".gif") || imgPath.endsWith(".Gif")) //判断是否是gif动图
{ QMovie *movie =new QMovie(imgPath);
ui->imgLabel->setMovie(movie);
movie->start();
}
else
{
ui->imgLabel->setPixmap(QPixmap(imgPath)); // 在imgLabel标签上显示图片
}
}

ui文件 imgPlayer.ui

参考:

QT制作一个图片播放器

Qt 简易图片播放器的更多相关文章

  1. QT制作一个图片播放器

    前言:使用qt制作了一个简单的图片播放器,可以播放gif.png等格式图片 先来看看播放器的功能(当然是很简陋的,没有很深入的设计): 1.点击图片列表中图片进行播放. 2.自动播放,播放的图片的间隔 ...

  2. 简易音乐播放器主界面设计 - .NET CORE(C#) WPF开发

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. 简易音乐播放器主界面设计 - .NET CORE(C#) WPF开发 阅读导航 本文背景 代码 ...

  3. HTML5动画图片播放器 高端大气

    我们见过很多图片播放插件(焦点图),很多都基于jQuery.今天介绍的HTML5图片播放器很特别,它不仅在图片间切换有过渡动画效果,而且在切换时图片中的元素也将出现动画效果,比如图中的文字移动.打散. ...

  4. WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现

    原文:WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放.图片立体轮播.图片倒影立体滚动)效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7 ...

  5. 用 EPWA 写一个 图片播放器 PicturePlayer

    用 EPWA 写一个 图片播放器  PicturePlayer  . 有关 EPWA,见 <我发起并创立了一个 EPWA 的 开源项目>   https://www.cnblogs.com ...

  6. ios开发学习- 简易音乐播放器2 (基于iPhone4s屏幕尺寸)-- 歌词解析--plist文件应用--imageNamed图片加载耗内存

    声明:(部分图片来自网络,如果侵犯了您的权益请联系我,会尽快删除!) 又是音乐播放器,不过这次和上次不一样了,准确说这次更像播放器了,初学者不建议看这个,可以先看前面一个音乐播放器(1),当然 我没加 ...

  7. Qt开发Gif播放器

    一.资源下载地址 https://www.aliyundrive.com/s/jBU2wBS8poH 本项目路径:项目->免费->Gif播放器(包含整个工程源码,vs2019打开即可编译运 ...

  8. iso 开发学习--简易音乐播放器(基于iPhone4s屏幕尺寸)

    三个按钮  一个进度条 贴图(软件中部分图片,来自网络,如果侵犯了您的权益,请联系我,会立刻撤下) 核心代码 // // ViewController.m // 08-10-MusicPlayer / ...

  9. Qt+MPlayer音乐播放器开发笔记(一):ubuntu上编译MPlayer以及Demo演示

    前言   在ubuntu上实现MPlayer播放器播放音乐.   Demo                Mplayer   MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布.此款软件 ...

随机推荐

  1. CentOS系统安装Python3

    准备: CentOS 6.4系统 Python-3.6.5.tgz 下载地址: 官网:https://www.python.org/downloads/release/python-365/ 镜像:h ...

  2. Jms规范学习

    1.什么是消息中间件? 关注于数据的发送和接受,利用高效可靠的异步消息传递机制集成分布式系统. 2.什么是JMS? Java消息服务(java Message Service)即JMS,是一个java ...

  3. Python基础24

    import 与 from import 知乎上说的简洁明了,zhihu.com/question/38857862 from import, 导入之后就能拿来用了,直接用!到处用!

  4. html跳转,获取get提交参数

    html跳转到html页面,url后面携带参数,可以通过脚本获取到url?test=value地址后的参数. 1.more.html 携带参数跳转到list.html,get提交参数 2.list.h ...

  5. Docker 安装mysql以及外部访问

    (1)因为我们的镜像是linux环境下的,我所在的系统是windows系统.首先通过docker客户端切换到linux环境下. (2)使用docker pull mysql/mysql-server ...

  6. js 落幕

    1.关于路由的跳转 核心是 a 再取出后缀作为参数判断 最后 innerHTML 上 <!DOCTYPE html> <html lang="en"> &l ...

  7. 201971010110-李华《面向对象程序设计(java)》第七周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  8. 03-numpy-笔记-expand_dims

    >>> x = np.array([[1,2,3],[4,5,6]]) >>> x.shape (2, 3) >>> np.expand_dims ...

  9. 在springboot中使用redis缓存,将缓存序列化为json格式的数据

    背景 在springboot中使用redis缓存结合spring缓存注解,当缓存成功后使用gui界面查看redis中的数据 原因 springboot缓存默认的序列化是jdk提供的 Serializa ...

  10. Manthan Codefest 19 题解

    这套题还是有点质量的吧 -- 题目链接 A. XORinacci 傻叉签到题,因为异或的性质所以这个序列的循环节长度只有 \(3\) -- 查看代码 B. Uniqueness 因为序列长度乃至数的种 ...