一、前言
使用 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
参考: