Sur cette page

QDirIterator Class

La classe QDirIterator fournit un itérateur pour les listes d'entrées de répertoires. Plus d'informations...

En-tête : #include <QDirIterator>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

Types publics

enum IteratorFlag { NoIteratorFlags, Subdirectories, FollowSymlinks }
flags IteratorFlags

Fonctions publiques

QDirIterator(const QDir &dir, QDirIterator::IteratorFlags flags = NoIteratorFlags)
QDirIterator(const QString &path, QDirIterator::IteratorFlags flags = NoIteratorFlags)
QDirIterator(const QString &path, QDir::Filters filters, QDirIterator::IteratorFlags flags = NoIteratorFlags)
QDirIterator(const QString &path, const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDirIterator::IteratorFlags flags = NoIteratorFlags)
~QDirIterator()
QFileInfo fileInfo() const
QString fileName() const
QString filePath() const
bool hasNext() const
QString next()
(since 6.3) QFileInfo nextFileInfo()
QString path() const

Description détaillée

Vous pouvez utiliser QDirIterator pour parcourir les entrées d'un répertoire une par une. Cette méthode est similaire à QDir::entryList() et QDir::entryInfoList(), mais comme elle énumère les entrées une par une au lieu de toutes à la fois, elle est plus évolutive et mieux adaptée aux grands répertoires. Il permet également de lister le contenu des répertoires de manière récursive et de suivre les liens symboliques. Contrairement à QDir::entryList(), QDirIterator ne prend pas en charge le tri.

Le constructeur de QDirIterator prend un QDir ou un répertoire comme argument. Après la construction, l'itérateur est situé avant la première entrée du répertoire. Voici comment parcourir toutes les entrées de manière séquentielle :

QDirIterator it("/etc", QDirIterator::Sous-répertoires) ;while (it.hasNext()) { QString dir = it.next() ;    qDebug() << dir;
   // /etc/. // /etc/ ... // /etc/X11 // /etc/X11/fs // ...}

Voici comment trouver et lire tous les fichiers filtrés par nom, de manière récursive :

QDirIterator it("/sys", QStringList()<< "scaling_cur_freq", QDir::NoFilter, QDirIterator::Sous-répertoires) ;while (it.hasNext()) { QFile f(it.next()) ; f.open(QIODevice::ReadOnly) ;    qDebug() << f.fileName() << f.readAll().trimmed().toDouble() / 1000 << "MHz";
}

Les fonctions next() et nextFileInfo() font avancer l'itérateur et renvoient le chemin d'accès ou le QFileInfo de l'entrée de répertoire suivante. Vous pouvez également appeler filePath() ou fileInfo() pour obtenir le chemin d'accès au fichier actuel ou QFileInfo sans faire avancer l'itérateur. La fonction fileName() renvoie uniquement le nom du fichier, de la même manière que QDir::entryList().

Contrairement aux itérateurs de conteneurs de Qt, QDirIterator est unidirectionnel (c'est-à-dire qu'il n'est pas possible d'itérer les répertoires dans l'ordre inverse) et ne permet pas l'accès aléatoire.

Note : Cette classe est obsolète et peut être supprimée dans une version de Qt. Utilisez QDirListing à la place, voir Portage de QDirIterator vers QDirListing.

Voir aussi QDir et QDir::entryList().

Type de membre Documentation

enum QDirIterator::IteratorFlag
flags QDirIterator::IteratorFlags

Cette énumération décrit les drapeaux que vous pouvez combiner pour configurer le comportement de QDirIterator.

ConstanteValeurDescription
QDirIterator::NoIteratorFlags0x0La valeur par défaut, qui représente l'absence de drapeaux. L'itérateur renvoie les entrées pour le chemin d'accès attribué.
QDirIterator::Subdirectories0x2Les entrées de tous les sous-répertoires sont également listées.
QDirIterator::FollowSymlinks0x1Combiné à l'option Sous-répertoires, cet indicateur permet d'itérer dans tous les sous-répertoires du chemin attribué, en suivant tous les liens symboliques. Les boucles de liens symboliques (par exemple, "link" => "." ou "link" => "...") sont automatiquement détectées et ignorées.

Le type IteratorFlags est un typedef pour QFlags<IteratorFlag>. Il stocke une combinaison OU de valeurs IteratorFlag.

Documentation des fonctions membres

QDirIterator::QDirIterator(const QDir &dir, QDirIterator::IteratorFlags flags = NoIteratorFlags)

Construit un QDirIterator qui peut itérer sur la liste d'entrées de dir en utilisant les filtres de noms et les filtres réguliers de dir. Vous pouvez passer des options via flags pour décider de la manière dont le répertoire doit être parcouru.

Par défaut, flags est NoIteratorFlags, ce qui donne le même comportement que dans QDir::entryList().

Le tri dans dir est ignoré.

Note : Pour lister les liens symboliques qui pointent vers des fichiers non existants, QDir::System doit être transmis aux drapeaux.

Voir aussi hasNext(), next() et IteratorFlags.

QDirIterator::QDirIterator(const QString &path, QDirIterator::IteratorFlags flags = NoIteratorFlags)

Construit un QDirIterator qui peut itérer sur path. Vous pouvez passer des options via flags pour décider comment le répertoire doit être itéré.

Par défaut, flags est NoIteratorFlags, ce qui donne le même comportement que dans QDir::entryList().

Note : Pour lister les liens symboliques qui pointent vers des fichiers non existants, QDir::System doit être passé aux drapeaux.

Voir aussi hasNext(), next(), et IteratorFlags.

QDirIterator::QDirIterator(const QString &path, QDir::Filters filters, QDirIterator::IteratorFlags flags = NoIteratorFlags)

Construit un QDirIterator qui peut itérer sur path, sans filtrage des noms et filters pour le filtrage des entrées. Vous pouvez passer des options via flags pour décider de la manière dont le répertoire doit être parcouru.

Par défaut, filters est QDir::NoFilter, et flags est NoIteratorFlags, ce qui donne le même comportement que dans QDir::entryList().

Note : Pour lister les liens symboliques qui pointent vers des fichiers non existants, QDir::System doit être passé aux drapeaux.

Voir aussi hasNext(), next() et IteratorFlags.

QDirIterator::QDirIterator(const QString &path, const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDirIterator::IteratorFlags flags = NoIteratorFlags)

Construit un QDirIterator qui peut itérer sur path, en utilisant nameFilters et filters. Vous pouvez passer des options via flags pour décider comment le répertoire doit être itéré.

Par défaut, flags est NoIteratorFlags, ce qui donne le même comportement que QDir::entryList().

Par exemple, l'itérateur suivant peut être utilisé pour parcourir les fichiers audio :

QDirIterator audioFileIt(audioPath, {"*.mp3", "*.wav"}, QDir::Files);

Remarque : pour répertorier les liens symboliques qui pointent vers des fichiers non existants, QDir::System doit être transmis aux drapeaux.

Voir aussi hasNext(), next(), IteratorFlags, et QDir::setNameFilters().

[noexcept] QDirIterator::~QDirIterator()

Détruit le site QDirIterator.

QFileInfo QDirIterator::fileInfo() const

Renvoie une adresse QFileInfo pour l'entrée actuelle du répertoire.

Voir aussi filePath() et fileName().

QString QDirIterator::fileName() const

Renvoie le nom de fichier de l'entrée actuelle du répertoire, sans le chemin d'accès.

Cette fonction est pratique pour parcourir un seul répertoire. Si vous utilisez l'option QDirIterator::Subdirectories, vous pouvez utiliser filePath() pour obtenir le chemin d'accès complet.

Voir aussi filePath() et fileInfo().

QString QDirIterator::filePath() const

Renvoie le chemin d'accès complet au répertoire actuel.

Voir aussi fileInfo() et fileName().

bool QDirIterator::hasNext() const

Renvoie true s'il existe au moins une entrée supplémentaire dans le répertoire ; sinon, il renvoie false.

Voir aussi next(), nextFileInfo(), fileName(), filePath() et fileInfo().

QString QDirIterator::next()

Fait passer l'itérateur à l'entrée suivante et renvoie le chemin d'accès au fichier de cette nouvelle entrée. Si hasNext() renvoie false, cette fonction ne fait rien et renvoie un QString vide. Idéalement, vous devriez toujours appeler hasNext() avant d'appeler cette méthode.

Vous pouvez appeler fileName() ou filePath() pour obtenir le nom de fichier ou le chemin d'accès de l'entrée actuelle, ou fileInfo() pour obtenir un QFileInfo pour l'entrée actuelle.

Appelez nextFileInfo() au lieu de next() si vous êtes intéressé par l'entrée QFileInfo.

Voir aussi hasNext(), nextFileInfo(), fileName(), filePath() et fileInfo().

[since 6.3] QFileInfo QDirIterator::nextFileInfo()

Avance l'itérateur jusqu'à l'entrée suivante et renvoie les informations sur le fichier de cette nouvelle entrée. Si hasNext() renvoie false, cette fonction ne fait rien et renvoie un QFileInfo vide. Idéalement, vous devriez toujours appeler hasNext() avant d'appeler cette méthode.

Vous pouvez appeler fileName() ou filePath() pour obtenir le nom de fichier ou le chemin de l'entrée en cours, ou fileInfo() pour obtenir QFileInfo pour l'entrée en cours.

Appelez next() au lieu de nextFileInfo() lorsque vous n'avez besoin que de filePath().

Cette fonction a été introduite dans Qt 6.3.

Voir aussi hasNext(), fileName(), filePath() et fileInfo().

QString QDirIterator::path() const

Renvoie le répertoire de base de l'itérateur.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.