以下のようなフォルダ構成となっている場合に、拡張子がjpg、pngのファイルのみを検索する例。
C:\work\test | test.exe | \---images | 1.png | 10.jpg | 11.jpeg | 2.png | コピー.txt | テスト.png | \---sub 99.png
サブフォルダ(サブディレクトリ)を検索しない場合
①QDirを使用する
QString path = QApplication::applicationDirPath() + "/images/"; QStringList nameFilters; nameFilters.append("*.png"); nameFilters.append("*.jpg"); QDir dir(path); QStringList entry = dir.entryList(nameFilters, QDir::Files); for (QString file : entry) { qDebug() << dir.filePath(file); }
②QDirIteratorを使用する
QString path = QApplication::applicationDirPath() + "/images/"; QStringList nameFilters; nameFilters.append("*.png"); nameFilters.append("*.jpg"); QDirIterator it(path, nameFilters, QDir::Files); while (it.hasNext()) { QString file = it.next(); qDebug() << file; }
サブフォルダ(サブディレクトリ)を検索する場合
サブフォルダを検索しない場合の②に、イテレータフラグ QDirIterator::Subdirectories を追加するのみ。
QString path = QApplication::applicationDirPath() + "/images/"; QStringList nameFilters; nameFilters.append("*.png"); nameFilters.append("*.jpg"); QDirIterator it(path, nameFilters, QDir::Files, QDirIterator::Subdirectories); while (it.hasNext()) { QString file = it.next(); qDebug() << file; }