Qtをメインに、プログラムやITに関する情報を発信

Qtの戯言

ファイル/フォルダ

Qtで任意のファイルを検索する

投稿日:

以下のようなフォルダ構成となっている場合に、拡張子が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;
}

 

-ファイル/フォルダ
-, ,

Copyright© Qtの戯言 , 2020 All Rights Reserved Powered by STINGER.