En esta página

QDirIterator Class

La clase QDirIterator proporciona un iterador para listas de entrada de directorios. Más...

Cabecera: #include <QDirIterator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Tipos Públicos

enum IteratorFlag { NoIteratorFlags, Subdirectories, FollowSymlinks }
flags IteratorFlags

Funciones Públicas

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

Descripción detallada

Puedes usar QDirIterator para navegar por las entradas de un directorio de una en una. Es similar a QDir::entryList() y QDir::entryInfoList(), pero como lista las entradas de una en una en lugar de todas a la vez, se escala mejor y es más adecuado para directorios grandes. También permite listar el contenido de los directorios de forma recursiva y seguir enlaces simbólicos. A diferencia de QDir::entryList(), QDirIterator no soporta la ordenación.

El constructor de QDirIterator toma un QDir o un directorio como argumento. Tras la construcción, el iterador se sitúa antes de la primera entrada del directorio. He aquí cómo iterar sobre todas las entradas secuencialmente:

QDirIterator it("/etc", QDirIterator::Subdirectorios);while (it.hasNext()) { QString dir = it.next();    qDebug() << dir;
   // /etc/. // /etc/.. // /etc/X11 // /etc/X11/fs // ...}

He aquí cómo encontrar y leer todos los ficheros filtrados por nombre, recursivamente:

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

Las funciones next() y nextFileInfo() hacen avanzar el iterador y devuelven la ruta o QFileInfo de la siguiente entrada de directorio. También puede llamar a filePath() o fileInfo() para obtener la ruta actual del fichero o QFileInfo sin hacer avanzar primero el iterador. La función fileName() devuelve sólo el nombre del fichero, de forma similar a como funciona QDir::entryList().

A diferencia de los iteradores contenedores de Qt, QDirIterator es unidireccional (es decir, no se pueden iterar directorios en orden inverso) y no permite el acceso aleatorio.

Nota: Esta clase está obsoleta y puede ser eliminada en una versión de Qt. Use QDirListing en su lugar, vea Porting QDirIterator to QDirListing.

Ver también QDir y QDir::entryList().

Documentación de tipos de miembros

enum QDirIterator::IteratorFlag
flags QDirIterator::IteratorFlags

Este enum describe flags que puedes combinar para configurar el comportamiento de QDirIterator.

ConstanteValorDescripción
QDirIterator::NoIteratorFlags0x0El valor por defecto, que representa ninguna bandera. El iterador devolverá entradas para la ruta asignada.
QDirIterator::Subdirectories0x2Lista también las entradas dentro de todos los subdirectorios.
QDirIterator::FollowSymlinks0x1Cuando se combina con Subdirectorios, esta bandera permite iterar a través de todos los subdirectorios de la ruta asignada, siguiendo todos los enlaces simbólicos. Los bucles de enlaces simbólicos (por ejemplo, "enlace" => "." o "enlace" => "..") se detectan automáticamente y se ignoran.

El tipo IteratorFlags es un typedef para QFlags<IteratorFlag>. Almacena una combinación OR de valores IteratorFlag.

Documentación de las funciones miembro

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

Construye un QDirIterator que puede iterar sobre dir's entrylist, usando dir's name filters y regular filters. Puede pasar opciones a través de flags para decidir cómo debe iterarse el directorio.

Por defecto, flags es NoIteratorFlags, que proporciona el mismo comportamiento que QDir::entryList().

La ordenación en dir se ignora.

Nota: Para listar enlaces simbólicos que apuntan a ficheros no existentes, debe pasarse QDir::System a las banderas.

Véase también hasNext(), next(), y IteratorFlags.

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

Construye un QDirIterator que puede iterar sobre path. Puedes pasar opciones via flags para decidir como debe ser iterado el directorio.

Por defecto, flags es NoIteratorFlags, que proporciona el mismo comportamiento que QDir::entryList().

Nota: Para listar enlaces simbólicos que apuntan a ficheros no existentes, debe pasarse QDir::System a las banderas.

Véase también hasNext(), next(), y IteratorFlags.

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

Construye un QDirIterator que puede iterar sobre path, sin filtrado de nombres y filters para filtrado de entradas. Puedes pasar opciones a través de flags para decidir como debe ser iterado el directorio.

Por defecto, filters es QDir::NoFilter, y flags es NoIteratorFlags, lo que proporciona el mismo comportamiento que en QDir::entryList().

Nota: Para listar enlaces simbólicos que apuntan a ficheros no existentes, debe pasarse QDir::System a las banderas.

Véase también hasNext(), next(), y IteratorFlags.

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

Construye un QDirIterator que puede iterar sobre path, usando nameFilters y filters. Puedes pasar opciones a través de flags para decidir como debe ser iterado el directorio.

Por defecto, flags es NoIteratorFlags, que proporciona el mismo comportamiento que QDir::entryList().

Por ejemplo, el siguiente iterador podría utilizarse para iterar sobre archivos de audio:

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

Nota: Para listar enlaces simbólicos que apuntan a archivos no existentes, debe pasarse QDir::System a las banderas.

Véase también hasNext(), next(), IteratorFlags, y QDir::setNameFilters().

[noexcept] QDirIterator::~QDirIterator()

Destruye el QDirIterator.

QFileInfo QDirIterator::fileInfo() const

Devuelve un QFileInfo para la entrada de directorio actual.

Véase también filePath() y fileName().

QString QDirIterator::fileName() const

Devuelve el nombre de archivo de la entrada del directorio actual, sin la ruta añadida.

Esta función es útil cuando se recorre un único directorio. Si utiliza la opción QDirIterator::Subdirectories, puede utilizar filePath() para obtener la ruta completa.

Véase también filePath() y fileInfo().

QString QDirIterator::filePath() const

Devuelve la ruta de archivo completa de la entrada de directorio actual.

Véase también fileInfo() y fileName().

bool QDirIterator::hasNext() const

Devuelve true si hay al menos una entrada más en el directorio; en caso contrario, devuelve false.

Véase también next(), nextFileInfo(), fileName(), filePath() y fileInfo().

QString QDirIterator::next()

Avanza el iterador a la siguiente entrada, y devuelve la ruta del archivo de esta nueva entrada. Si hasNext() devuelve false, esta función no hace nada, y devuelve un QString vacío. Lo ideal es llamar siempre a hasNext() antes de llamar a este método.

Puede llamar a fileName() o filePath() para obtener el nombre de archivo o la ruta de la entrada actual, o a fileInfo() para obtener un QFileInfo para la entrada actual.

Llame a nextFileInfo() en lugar de a next() si está interesado en el QFileInfo.

Véase también hasNext(), nextFileInfo(), fileName(), filePath() y fileInfo().

[since 6.3] QFileInfo QDirIterator::nextFileInfo()

Avanza el iterador a la siguiente entrada, y devuelve la información de archivo de esta nueva entrada. Si hasNext() devuelve false, esta función no hace nada, y devuelve un QFileInfo vacío. Lo ideal es llamar siempre a hasNext() antes de llamar a este método.

Puede llamar a fileName() o filePath() para obtener el nombre de archivo o la ruta de la entrada actual, o a fileInfo() para obtener un QFileInfo para la entrada actual.

Llame a next() en lugar de nextFileInfo() cuando todo lo que necesite sea filePath().

Esta función se introdujo en Qt 6.3.

Véase también hasNext(), fileName(), filePath() y fileInfo().

QString QDirIterator::path() const

Devuelve el directorio base del iterador.

© 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.