zoukankan      html  css  js  c++  java
  • Qt 简易图片播放器

    一、前言

    使用 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制作一个图片播放器


  • 相关阅读:
    Codeforces Round #274 (Div. 2)
    codeforces 477C
    ZOJ 3822 Domination
    Codeforces Round #271 (Div. 2)
    进程
    线程
    udp和tcp特点 实现文件上传
    面向对象补1
    socket基本语法和粘包
    网络编程
  • 原文地址:https://www.cnblogs.com/linuxAndMcu/p/11347397.html
Copyright © 2011-2022 走看看