QFileSystemWatcher Class
La clase QFileSystemWatcher provee una interfaz para monitorear archivos y directorios en busca de modificaciones. Más...
| Cabecera: | #include <QFileSystemWatcher> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Hereda: | QObject |
- Lista de todos los miembros, incluyendo los heredados
- QFileSystemWatcher es parte de Entrada/Salida y Redes.
Nota: Todas las funciones de esta clase son reentrantes.
Funciones Públicas
| QFileSystemWatcher(QObject *parent = nullptr) | |
| QFileSystemWatcher(const QStringList &paths, QObject *parent = nullptr) | |
| virtual | ~QFileSystemWatcher() |
| bool | addPath(const QString &path) |
| QStringList | addPaths(const QStringList &paths) |
| QStringList | directories() const |
| QStringList | files() const |
| bool | removePath(const QString &path) |
| QStringList | removePaths(const QStringList &paths) |
Señales
| void | directoryChanged(const QString &path) |
| void | fileChanged(const QString &path) |
Descripción Detallada
QFileSystemWatcher monitorea el sistema de archivos por cambios en archivos y directorios observando una lista de rutas especificadas.
Llama a addPath() para vigilar un archivo o directorio en particular. Se pueden añadir múltiples rutas usando la función addPaths(). Las rutas existentes pueden eliminarse utilizando las funciones removePath() y removePaths().
QFileSystemWatcher examina cada ruta que se le añade. Los ficheros que han sido añadidos a QFileSystemWatcher pueden ser accedidos usando la función files(), y los directorios usando la función directories().
La señal fileChanged() se emite cuando un fichero ha sido modificado, renombrado o eliminado del disco. Del mismo modo, la señal directoryChanged() se emite cuando se modifica o elimina un directorio o su contenido. Ten en cuenta que QFileSystemWatcher deja de monitorizar ficheros una vez que han sido renombrados o eliminados del disco, y directorios una vez que han sido eliminados del disco.
- Notas:
- En sistemas con un kernel Linux sin soporte para inotify, los sistemas de ficheros que contienen rutas monitorizadas no pueden ser desmontados.
- El hecho de monitorizar ficheros y directorios en busca de modificaciones consume recursos del sistema. Esto implica que hay un límite en el número de ficheros y directorios que su proceso puede monitorizar simultáneamente. En todas las variantes de BSD, por ejemplo, se requiere un descriptor de fichero abierto para cada fichero monitorizado. Algunos sistemas limitan el número de descriptores de fichero abiertos a 256 por defecto. Esto significa que addPath() y addPaths() fallarán si su proceso intenta añadir más de 256 archivos o directorios al monitor del sistema de archivos. También ten en cuenta que tu proceso puede tener otros descriptores de archivo abiertos además de los de los archivos que están siendo monitorizados, y estos otros descriptores abiertos también cuentan en el total. macOS utiliza un backend diferente y no sufre este problema.
Documentación de las funciones miembro
QFileSystemWatcher::QFileSystemWatcher(QObject *parent = nullptr)
Construye un nuevo objeto observador del sistema de archivos con la dirección parent.
QFileSystemWatcher::QFileSystemWatcher(const QStringList &paths, QObject *parent = nullptr)
Construye un nuevo objeto observador del sistema de archivos con la dirección parent que supervisa la lista paths especificada.
[virtual noexcept] QFileSystemWatcher::~QFileSystemWatcher()
Destruye el observador del sistema de archivos.
bool QFileSystemWatcher::addPath(const QString &path)
Añade path al observador del sistema de archivos si path existe. La ruta no se añade si no existe, o si ya está siendo monitorizada por el observador del sistema de ficheros.
Si path especifica un directorio, se emitirá la señal directoryChanged() cuando path sea modificado o eliminado del disco; en caso contrario, se emitirá la señal fileChanged() cuando path sea modificado, renombrado o eliminado.
Si la vigilancia ha tenido éxito, se devuelve true.
Las razones de un fallo de vigilancia dependen generalmente del sistema, pero pueden incluir que el recurso no exista, fallos de acceso, o el límite total de vigilancia, si la plataforma tiene uno.
Nota: Puede haber un límite dependiente del sistema para el número de archivos y directorios que pueden ser monitorizados simultáneamente. Si se alcanza este límite, path no será monitorizado, y se devuelve false.
Véase también addPaths() y removePath().
QStringList QFileSystemWatcher::addPaths(const QStringList &paths)
Añade cada ruta en paths al observador del sistema de archivos. Las rutas no se añaden si no existen, o si ya están siendo monitorizadas por el observador del sistema de ficheros.
Si una ruta especifica un directorio, se emitirá la señal directoryChanged() cuando la ruta sea modificada o eliminada del disco; en caso contrario, se emitirá la señal fileChanged() cuando la ruta sea modificada, renombrada o eliminada.
El valor devuelto es una lista de rutas que no han podido ser vigiladas.
Las razones de un fallo de vigilancia dependen generalmente del sistema, pero pueden incluir la inexistencia del recurso, fallos de acceso o el límite total de vigilancia, si la plataforma tiene uno.
Nota: Puede haber un límite dependiente del sistema para el número de archivos y directorios que pueden ser monitorizados simultáneamente. Si se ha alcanzado este límite, el exceso de paths no será monitorizado, y se añadirá al QStringList devuelto.
Véase también addPath() y removePaths().
QStringList QFileSystemWatcher::directories() const
Devuelve una lista de rutas a directorios que están siendo vigilados.
Véase también files().
[private signal] void QFileSystemWatcher::directoryChanged(const QString &path)
Esta señal se emite cuando el directorio en un path especificado se modifica (por ejemplo, cuando se añade o elimina un archivo) o se elimina del disco. Ten en cuenta que si hay varios cambios durante un corto periodo de tiempo, algunos de los cambios podrían no emitir esta señal. Sin embargo, el último cambio en la secuencia de cambios siempre generará esta señal.
Nota: Se trata de una señal privada. Puede utilizarse en conexiones de señales, pero no puede ser emitida por el usuario.
Véase también fileChanged().
[private signal] void QFileSystemWatcher::fileChanged(const QString &path)
Esta señal se emite cuando el fichero en la dirección path especificada se modifica, renombra o elimina del disco.
Nota: Como medida de seguridad, muchas aplicaciones guardan un fichero abierto escribiendo un nuevo fichero y borrando después el antiguo. En su función de ranura, puede comprobar watcher.files().contains(path). Si devuelve false, comprueba si el fichero sigue existiendo y luego llama a addPath() para seguir viéndolo.
Nota: Esta es una señal privada. Puede utilizarse en conexiones de señales, pero no puede ser emitida por el usuario.
Véase también directoryChanged().
QStringList QFileSystemWatcher::files() const
Devuelve una lista de rutas a archivos que están siendo observados.
Véase también directories().
bool QFileSystemWatcher::removePath(const QString &path)
Elimina el path especificado del observador del sistema de archivos.
Si el observador se elimina correctamente, se devuelve true.
Las razones por las que falla la eliminación del observador dependen generalmente del sistema, pero pueden deberse a que la ruta ya ha sido eliminada, por ejemplo.
Véase también removePaths() y addPath().
QStringList QFileSystemWatcher::removePaths(const QStringList &paths)
Elimina la dirección paths especificada del observador del sistema de archivos.
El valor devuelto es una lista de rutas que no han podido ser desobservadas con éxito.
Las razones por las que falla la eliminación del observador dependen generalmente del sistema, pero pueden deberse a que la ruta ya ha sido eliminada, por ejemplo.
Véase también removePath() y addPaths().
© 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.