Auf dieser Seite

QFileSystemWatcher Class

Die Klasse „QFileSystemWatcher“ bietet eine Schnittstelle zur Überwachung von Dateien und Verzeichnissen auf Änderungen. Mehr...

Header: #include <QFileSystemWatcher>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Erbt von: QObject

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

Öffentliche Funktionen

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)

Signale

void directoryChanged(const QString &path)
void fileChanged(const QString &path)

Ausführliche Beschreibung

QFileSystemWatcher überwacht das Dateisystem auf Änderungen an Dateien und Verzeichnissen, indem es eine Liste angegebener Pfade überwacht.

Rufen Sie ` addPath()` auf, um eine bestimmte Datei oder ein bestimmtes Verzeichnis zu überwachen. Mit der Funktion ` addPaths()` können mehrere Pfade hinzugefügt werden. Vorhandene Pfade können mit den Funktionen ` removePath()` und ` removePaths()` entfernt werden.

QFileSystemWatcher überprüft jeden ihm hinzugefügten Pfad. Auf Dateien, die dem QFileSystemWatcher hinzugefügt wurden, kann über die Funktion ` files()` zugegriffen werden, auf Verzeichnisse über die Funktion ` directories()`.

Das Signal „ fileChanged()“ wird ausgelöst, wenn eine Datei geändert, umbenannt oder von der Festplatte gelöscht wurde. Analog dazu wird das Signal „ directoryChanged()“ ausgelöst, wenn ein Verzeichnis oder dessen Inhalt geändert oder gelöscht wurde. Beachten Sie, dass der `QFileSystemWatcher` die Überwachung von Dateien einstellt, sobald diese umbenannt oder von der Festplatte gelöscht wurden, und die Überwachung von Verzeichnissen einstellt, sobald diese von der Festplatte gelöscht wurden.

  • Hinweise:
    • Auf Systemen, auf denen ein Linux-Kernel ohne inotify-Unterstützung läuft, können Dateisysteme, die überwachte Pfade enthalten, nicht ausgehängt werden.
    • Die Überwachung von Dateien und Verzeichnissen auf Änderungen beansprucht Systemressourcen. Dies bedeutet, dass die Anzahl der Dateien und Verzeichnisse, die Ihr Prozess gleichzeitig überwachen kann, begrenzt ist. Auf allen BSD-Varianten ist beispielsweise für jede überwachte Datei ein offener Dateideskriptor erforderlich. Einige Systeme begrenzen die Anzahl der offenen Dateideskriptoren standardmäßig auf 256. Das bedeutet, dass die Funktionen ` addPath()` und ` addPaths()` fehlschlagen, wenn Ihr Prozess versucht, mehr als 256 Dateien oder Verzeichnisse zur Dateisystemüberwachung hinzuzufügen. Beachten Sie außerdem, dass Ihr Prozess möglicherweise neben den Deskriptoren für die überwachten Dateien noch weitere offene Dateideskriptoren hat, und dass diese anderen offenen Deskriptoren ebenfalls zur Gesamtzahl zählen. macOS verwendet ein anderes Backend und ist von diesem Problem nicht betroffen.

Siehe auch QFile und QDir.

Dokumentation zu Mitgliedsfunktionen

QFileSystemWatcher::QFileSystemWatcher(QObject *parent = nullptr)

Erstellt ein neues Dateisystem-Watcher-Objekt mit dem angegebenen „ parent “.

QFileSystemWatcher::QFileSystemWatcher(const QStringList &paths, QObject *parent = nullptr)

Erstellt ein neues Dateisystem-Beobachtungsobjekt mit dem angegebenen „ parent “, das die angegebene Liste „ paths “ überwacht.

[virtual noexcept] QFileSystemWatcher::~QFileSystemWatcher()

Löscht den Dateisystem-Watcher.

bool QFileSystemWatcher::addPath(const QString &path)

Fügt „ path “ zum Dateisystem-Watcher hinzu, sofern „ path “ existiert. Der Pfad wird nicht hinzugefügt, wenn er nicht existiert oder bereits vom Dateisystem-Watcher überwacht wird.

Wenn „ path “ ein Verzeichnis angibt, wird das Signal „ directoryChanged()“ ausgelöst, wenn „ path “ geändert oder von der Festplatte entfernt wird; andernfalls wird das Signal „ fileChanged()“ ausgelöst, wenn „ path “ geändert, umbenannt oder entfernt wird.

War die Überwachung erfolgreich, wird „true“ zurückgegeben.

Gründe für einen Fehlschlag der Überwachung sind in der Regel systemabhängig, können jedoch das Nichtvorhandensein der Ressource, Zugriffsfehler oder das Erreichen des Gesamtlimits für Überwachungen umfassen, sofern die Plattform ein solches Limit vorsieht.

Hinweis: Es kann eine systemabhängige Begrenzung für die Anzahl der Dateien und Verzeichnisse geben, die gleichzeitig überwacht werden können. Wenn diese Grenze erreicht ist, wird „ path “ nicht überwacht und „false“ zurückgegeben.

Siehe auch addPaths() und removePath().

QStringList QFileSystemWatcher::addPaths(const QStringList &paths)

Fügt jeden Pfad in „ paths “ zum Dateisystem-Watcher hinzu. Pfade werden nicht hinzugefügt, wenn sie nicht existieren oder bereits vom Dateisystem-Watcher überwacht werden.

Wenn ein Pfad ein Verzeichnis angibt, wird das Signal „ directoryChanged()“ ausgelöst, wenn der Pfad geändert oder von der Festplatte entfernt wird; andernfalls wird das Signal „ fileChanged()“ ausgelöst, wenn der Pfad geändert, umbenannt oder entfernt wird.

Der Rückgabewert ist eine Liste der Pfade, die nicht überwacht werden konnten.

Gründe für einen Überwachungsfehler sind in der Regel systemabhängig, können jedoch unter anderem darin bestehen, dass die Ressource nicht existiert, Zugriffsfehler auftreten oder die Obergrenze für die Gesamtzahl der Überwachungen erreicht wurde, sofern die Plattform eine solche vorsieht.

Hinweis: Es kann eine systemabhängige Begrenzung für die Anzahl der Dateien und Verzeichnisse geben, die gleichzeitig überwacht werden können. Wenn diese Grenze erreicht ist, werden die darüber hinausgehenden paths nicht überwacht und der zurückgegebenen Liste QStringList hinzugefügt.

Siehe auch ` addPath()` und ` removePaths()`.

QStringList QFileSystemWatcher::directories() const

Gibt eine Liste der Pfade zu den Verzeichnissen zurück, die überwacht werden.

Siehe auch ` files()`.

[private signal] void QFileSystemWatcher::directoryChanged(const QString &path)

Dieses Signal wird ausgelöst, wenn das Verzeichnis unter einer bestimmten path geändert (z. B. wenn eine Datei hinzugefügt oder gelöscht wird) oder von der Festplatte entfernt wird. Beachten Sie, dass bei mehreren Änderungen innerhalb kurzer Zeit möglicherweise nicht bei allen Änderungen dieses Signal ausgelöst wird. Die letzte Änderung in der Abfolge der Änderungen löst dieses Signal jedoch immer aus.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch ` fileChanged()`.

[private signal] void QFileSystemWatcher::fileChanged(const QString &path)

Dieses Signal wird ausgelöst, wenn die Datei unter der angegebenen Adresse path geändert, umbenannt oder von der Festplatte gelöscht wird.

Hinweis: Aus Sicherheitsgründen speichern viele Anwendungen eine geöffnete Datei, indem sie eine neue Datei schreiben und anschließend die alte löschen. In Ihrer Slot-Funktion können Sie ` watcher.files().contains(path)` überprüfen. Wenn der Wert ` false` zurückgegeben wird, prüfen Sie, ob die Datei noch vorhanden ist, und rufen Sie anschließend ` addPath() ` auf, um die Überwachung fortzusetzen.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch directoryChanged().

QStringList QFileSystemWatcher::files() const

Gibt eine Liste der Pfade zu den Dateien zurück, die überwacht werden.

Siehe auch ` directories()`.

bool QFileSystemWatcher::removePath(const QString &path)

Entfernt die angegebene „ path “ aus dem Dateisystem-Watcher.

Wurde die Überwachung erfolgreich entfernt, wird „true“ zurückgegeben.

Gründe für das Scheitern der Entfernung der Überwachung sind in der Regel systemabhängig, können aber beispielsweise darin liegen, dass der Pfad bereits gelöscht wurde.

Siehe auch „ removePaths()“ und „ addPath()“.

QStringList QFileSystemWatcher::removePaths(const QStringList &paths)

Entfernt den angegebenen „ paths “ aus dem Dateisystem-Watcher.

Der Rückgabewert ist eine Liste von Pfaden, deren Überwachung nicht erfolgreich beendet werden konnte.

Gründe für das Scheitern der Entfernung aus der Überwachung sind in der Regel systemabhängig, können aber beispielsweise darin liegen, dass der Pfad bereits gelöscht wurde.

Siehe auch ` removePath()` und ` 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.