Qt遍历指定文件夹下图片并显示

 

义文件夹路径i,筛选指定文件后缀,得到文件名的集合,鼠标点击在label上循环显示图片。

 .h文件

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include 
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();
private:
    QDir dir;
    int ImageCount;
protected:
      bool eventFilter(QObject *obj, QEvent *event);
private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

.cpp 文件

#include "widget.h"
#include "ui_widget.h"
#include 
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    QString  ImagePath = "./myPic";//文件夹路径
    dir.setPath(ImagePath);
    QStringList ImageList;
    ImageList << "*.bmp" << "*.jpg" << "*.png";//向字符串列表添加图片类型
    dir.setNameFilters(ImageList);//获得文件夹下图片的名字
    ImageCount = dir.count();//获得dir里名字的个数,也表示文件夹下图片的个数
    ui->label->installEventFilter(this);
    QString ImageName  = "./myPic/"+dir[0];
    QImage image(ImageName);
    ui->label->setPixmap(QPixmap::fromImage(image));
    this->setWindowFlags(Qt::FramelessWindowHint);
}

Widget::~Widget()
{
    delete ui;
}

bool Widget::eventFilter(QObject *obj, QEvent *event)
{
    if(obj==ui->label&&event->type()==QEvent::MouseButtonPress)
    {
        static int flag=1;
        if(flag>ImageCount-1)
        {
            flag=0;
            return 1;
        }
        QString ImageName  = "./myPic/"+dir[flag];
        QImage image(ImageName);
        ui->label->setPixmap(QPixmap::fromImage(image));
        ++flag;
        return 1;
    }
}

xu'na'hun

你可能感兴趣的:(Qt,Qt)