QT制作一个图片播放器

本文介绍了如何使用QT创建一个简单的图片播放器,具备点击播放、自动播放等功能。该播放器支持gif、png等格式,自动播放时可设置间隔时间,并能在播放列表中切换图片。文章详细讲解了制作思路及主要代码,包括文件路径获取、图片显示、定时器应用等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:使用qt制作了一个简单的图片播放器,可以播放gif、png等格式图片

先来看看播放器的功能(当然是很简陋的,没有很深入的设计):

    1、点击图片列表中图片进行播放。

    2、自动播放,播放的图片的间隔时间可以自己设定,时间的单位是秒。

    3、自动播放的时候再点击图片列表会停止自动播放,保存当前播放的图片的顺序,再次点击自动播放的时候将从当前开始。

    4、自动播放到最后一张图片的时候将会停止自动播放,再次点击自动播放的时候将会从第一张图片开始。

 

先上图看看具体功能:

 

 

 

说完功能我们聊聊制作思路和使用到的主要代码:

1、打开有图片的文件,并获取文件的路径

Dir = QFileDialog::getExistingDirectory(this);//获取文件所在的具体路径

 

2、把文件的路径显示在指定的窗口

ui->photoPath->setText(Dir);//显示打开的文件的具体路径

 

3、列出文件中的图片的路径,建立小图标,并把图片路径保存到容器中,方便自动播放

//列出目录下的文件
    for(int i=0;i<fileList.count();i++)
    {
        QFileInfo info = fileList.at(i);
        fileDir.clear();
        fileDir.append(Dir + "/"); 
        QString filename = info.fileName();
        fileDir.append(filename);
        photoPath.append(filename);// 把图片的路径保存到容器中

        if(info.fileName() == "." || info.fileName() == "..") //跳过这两个目录
        {
            continue;
        }
        QListWidgetItem *item = new QListWidgetItem(QIcon(fileDir),info.fileName());//建立文件缩小图标
        ui->photoList->addItem(item);//把图片相对路径显示到窗口中

      }

 

4、单击图片列表中的图片进行播放(图片播放的代码)

tempDir.clear();
 tempDir.append(Dir+"/");
 QString path = ui->photoList->currentItem()->text();
 tempDir.append(path);    
 ui->photoShow->setScaledContents(true);//显示图片的全部
 ui->photoShow->setPixmap(QPixmap(tempDir));//显示图

 

5、动态图播放

//播放动态图
void MainWindow::showDinamicPhoto(QString path)
{
    QMovie *movie = new QMovie(path);  // path图片路径
    movie->start(); //开始播放动态图
    ui->photoShow->setMovie(movie); //将图片设置为为动态
    ui->photoShow->setScaledContents(true); //尽可能完整的播放整张动图 ,此处要设置为true
}

 

6、自动播放,这里的自动播放我使用了定时器实现

    else if(checked) //启动定时器
    {
       delayTime = ui->delayEdit->text();
       mtime->start(delayTime.toInt()*1000);//启动定时器并设置播放时间间隔
       autoFlag = true;
       ui->autoPhoto->setCheckState(Qt::Unchecked);
    }
    else if(!checked)//停止定时器
    {
        mtime->stop();//停止定时器
        delayTime.clear();
        autoFlag = false;
    }

 

7、设置自动播按钮的状态

 ui->autoPhoto->setCheckState(Qt::Unchecked); //把按钮重新置于没有被选中的状态

这里切记要这样使用,不要用setCheckable()函数,很容易出错

 

具体代码如下:

头文件mainwindow.h

 1 #ifndef MAINWINDOW_H
 2 #define MAINWINDOW_H
 3 
 4 #include <QMainWindow>
 5 #include <QFile>
 6 #include <QDir>
 7 #include <QTimer>
 8 #include <QThread>
 9 namespace Ui {
10 class MainWindow;
11 }
12 
13 class MainWindow : public QMainWindow
14 {
15     Q_OBJECT
16 
17 public:
18     explicit MainWindow(QWidget *parent = 0);
19     ~MainWindow();
20 
21 private slots:
22     void on_pathBt_clicked(); //打开目录
23 
24     void on_photoList_clicked(const QModelIndex &index);//单击播放图片
25 
26     void on_autoPhoto_clicked(bool checked);//自动播放选择
27     void autoPhoto(); //自动播放函数
28     void showDinamicPhoto(QString path);//动态图播放(格式为gif)
29 
30 private:
31     Ui::MainWindow *ui;
32     QFile *file;
33     QString Dir;//打开文件的路径
34     QString tempDir; //照片的绝地路径
35     QVector<QString> photoPath;//存放照片相对路径的容器
36
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值