QFileSystemWatcher Class

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

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

Hinweis: Alle Funktionen in 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)

Detaillierte Beschreibung

QFileSystemWatcher überwacht das Dateisystem auf Änderungen an Dateien und Verzeichnissen, indem es eine Liste von angegebenen Pfaden beobachtet.

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

QFileSystemWatcher prüft jeden hinzugefügten Pfad. Auf Dateien, die zum QFileSystemWatcher hinzugefügt wurden, kann mit der Funktion files() zugegriffen werden, auf Verzeichnisse mit der Funktion directories().

Das fileChanged() Signal wird ausgegeben, wenn eine Datei geändert, umbenannt oder von der Festplatte entfernt wurde. Ähnlich wird das Signal directoryChanged() ausgegeben, wenn ein Verzeichnis oder dessen Inhalt geändert oder entfernt wurde. Beachten Sie, dass QFileSystemWatcher aufhört, Dateien zu überwachen, wenn sie umbenannt oder von der Platte entfernt wurden, und Verzeichnisse, wenn sie von der Platte entfernt wurden.

  • Anmerkungen:
    • 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 verbraucht Systemressourcen. Dies bedeutet, dass es eine Grenze für die Anzahl der Dateien und Verzeichnisse gibt, die Ihr Prozess gleichzeitig überwachen kann. Bei allen BSD-Varianten ist zum Beispiel für jede überwachte Datei ein offener Dateideskriptor erforderlich. Einige Systeme begrenzen die Anzahl der offenen Dateideskriptoren standardmäßig auf 256. Das bedeutet, dass addPath() und addPaths() fehlschlagen werden, wenn Ihr Prozess versucht, mehr als 256 Dateien oder Verzeichnisse zur Dateisystemüberwachung hinzuzufügen. Beachten Sie auch, dass Ihr Prozess zusätzlich zu den zu überwachenden Dateien weitere Dateideskriptoren geöffnet haben kann, die ebenfalls in die Gesamtzahl eingehen. macOS verwendet ein anderes Backend und leidet nicht unter diesem Problem.

Siehe auch QFile und QDir.

Dokumentation der Mitgliedsfunktionen

QFileSystemWatcher::QFileSystemWatcher(QObject *parent = nullptr)

Konstruiert ein neues Dateisystemüberwachungsobjekt mit dem angegebenen parent.

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

Konstruiert ein neues Dateisystemüberwachungsobjekt mit dem angegebenen parent, das die angegebene paths Liste überwacht.

[virtual noexcept] QFileSystemWatcher::~QFileSystemWatcher()

Zerstört den Dateisystem-Watcher.

bool QFileSystemWatcher::addPath(const QString &path)

Fügt path zur Dateisystemüberwachung hinzu, wenn path existiert. Der Pfad wird nicht hinzugefügt, wenn er nicht existiert oder wenn er bereits von der Dateisystemüberwachung überwacht wird.

Wenn path ein Verzeichnis angibt, wird das Signal directoryChanged() ausgegeben, wenn path geändert oder von der Platte entfernt wird; andernfalls wird das Signal fileChanged() ausgegeben, wenn path geändert, umbenannt oder entfernt wird.

Wenn die Überwachung erfolgreich war, wird true zurückgegeben.

Die Gründe für einen Watch-Fehler sind im Allgemeinen systemabhängig, können aber auch darin bestehen, dass die Ressource nicht existiert, dass der Zugriff fehlgeschlagen ist oder dass die Gesamtzahl der Watches begrenzt ist, falls die Plattform eine solche Grenze hat.

Hinweis: Es kann ein systemabhängiges Limit 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 Dateisystemwächter hinzu. Pfade werden nicht hinzugefügt, wenn sie nicht existieren oder wenn sie bereits von der Dateisystemüberwachung überwacht werden.

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

Der Rückgabewert ist eine Liste von Pfaden, die nicht überwacht werden konnten.

Die Gründe für einen Überwachungsfehler sind im Allgemeinen systemabhängig, können aber auch darin bestehen, dass die Ressource nicht existiert, dass der Zugriff fehlgeschlagen ist oder dass die Gesamtzahl der überwachten Pfade begrenzt ist, falls die Plattform eine solche Grenze hat.

Hinweis: Es kann eine systemabhängige Grenze für die Anzahl der Dateien und Verzeichnisse geben, die gleichzeitig überwacht werden können. Wenn diese Grenze erreicht ist, werden die überzähligen paths nicht überwacht, sondern zu den zurückgegebenen QStringList hinzugefügt.

Siehe auch addPath() und removePaths().

QStringList QFileSystemWatcher::directories() const

Gibt eine Liste von Pfaden zu Verzeichnissen zurück, die überwacht werden.

Siehe auch files().

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

Dieses Signal wird ausgegeben, wenn das Verzeichnis unter einer bestimmten Adresse 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 einer kurzen Zeitspanne einige der Änderungen dieses Signal möglicherweise nicht auslösen. Die letzte Änderung in der Abfolge der Änderungen wird jedoch immer dieses Signal erzeugen.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann aber nicht vom Benutzer ausgegeben werden.

Siehe auch fileChanged().

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

Dieses Signal wird ausgegeben, wenn die Datei unter der angegebenen Adresse path geändert, umbenannt oder von der Festplatte entfernt wird.

Hinweis: Als Sicherheitsmaßnahme speichern viele Anwendungen eine geöffnete Datei, indem sie eine neue Datei schreiben und dann die alte löschen. In Ihrer Slot-Funktion können Sie watcher.files().contains(path) überprüfen. Wenn sie false zurückgibt, prüfen Sie, ob die Datei noch existiert und rufen dann addPath() auf, um sie weiter zu beobachten.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, aber nicht vom Benutzer ausgegeben werden.

Siehe auch directoryChanged().

QStringList QFileSystemWatcher::files() const

Gibt eine Liste von Pfaden zu Dateien zurück, die überwacht werden.

Siehe auch directories().

bool QFileSystemWatcher::removePath(const QString &path)

Entfernt die angegebene path aus der Dateisystemüberwachung.

Wenn die Überwachung erfolgreich entfernt wurde, wird true zurückgegeben.

Die Gründe für das Scheitern der Watch-Entfernung sind in der Regel systemabhängig, können aber z. B. darauf zurückzuführen sein, dass der Pfad bereits gelöscht wurde.

Siehe auch removePaths() und addPath().

QStringList QFileSystemWatcher::removePaths(const QStringList &paths)

Entfernt die angegebene paths aus der Dateisystemüberwachung.

Der Rückgabewert ist eine Liste von Pfaden, die nicht erfolgreich entmaskiert werden konnten.

Die Gründe für das Scheitern des Entfernens von Überwachungen sind im Allgemeinen systemabhängig, können aber z.B. darauf zurückzuführen sein, dass der Pfad bereits gelöscht wurde.

Siehe auch removePath() und addPaths().

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