カンテラの光の下で

dNaga392's memorandom

【Qt】【QDirIterator】サブディレクトリを含むファイル検索

QDirIterator でサブディレクトリを含むファイル検索をする。

QDirIterator::IteratorFlags を設定すればok

以下はユーザーのピクチャフォルダのjpeg,pngファイルを検索するやつ

    // ユーザーのPicturesフォルダパスを取得  
    QString dirPath = QDesktopServices::storageLocation ( QDesktopServices::PicturesLocation);  
    // 対象のファイル名フィルタ  
    QStringList nameFilters;  
    nameFilters << "*.jpg" << "*.png";  
    // ファイルフィルタ  
    QDir::Filters filters = QDir::Files;  
    // 対象フラグ  
    QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags;  
    // サブディレクトリを探索するかどうか  
    bool canSerchSubDir= true;  
    if(canSerchSubDir)  
    {  
        flags = QDirIterator::Subdirectories;  
    }  
    // イテレーターの生成  
    QDirIterator it(dirPath, nameFilters, filters, flags);  
    QStringList files;  
    while (it.hasNext())  
    {  
        QString file = it.next();  
        files << file;  
        qDebug() << file;  
    }  

c++ - Recursively iterate over all the files in a directory and its subdirectories in Qt - Stack Overflow

隠しフォルダも対象とするときは、QDir::Hidden を追加します

 filters |= QDir::Hidden

[QTBUG-30499] QDirIterator does not show "hidden" files - Qt Bug Tracker