qt获取文件夹下的所有文件名 (qt如何实现从文件路径找到文件名)

应用场景,获取一个目录下,包含子目录下,给定匹配文件类型的所有符合文件的MD5

完整代码如下:

#include <QDebug>
#include <QDir>
#include <QCryptographicHash>
#include <QDirIterator>


void getAllFiles(const QString& foldPath,QStringList &folds,const QStringList& formats) {
    QDirIterator it(foldPath,QDir::Files | QDir::NoDotAndDotDot ,QDirIterator::Subdirectories);
    while (it.hasNext()) {
        it.next();
        QFileInfo fileInfo = it.fileInfo();
        if(formats.contains(fileInfo.suffix())) { //检测格式,按需保存
            folds << fileInfo.absoluteFilePath();
        }
    }
}

void getmd5(QString filename)
{
    QFile theFile(filename);
    theFile.open(QIODevice::ReadOnly);
    QByteArray ba = QCryptographicHash::hash(theFile.readAll(), QCryptographicHash::Md5);
    theFile.close();
    qDebug() << ba.toHex().constData();

}



Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QString dirpath = "D:\\bakup";

        QDir dir(dirpath);

        QStringList nameFilters;
        nameFilters << "*.*" << "*.flv";



        QStringList folds;
        QStringList fmt = QString("exe;com").split(';');
        getAllFiles("d:\\bakup\\",folds,fmt);
        qDebug() << folds;


        for(int i = 0; i< folds.size(); ++i)
        {
           QString temp =folds.at(i);
           qDebug() << "filename: " << temp;
           getmd5(temp);
        }




}