このページでは

QFileSystemWatcher Class

QFileSystemWatcher クラスは、ファイルやディレクトリの変更を監視するためのインターフェースを提供します。詳細...

ヘッダー: #include <QFileSystemWatcher>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
継承元: QObject

注:このクラスのすべての関数は再入可能です。

パブリック関数

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)

シグナル

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

詳細な説明

QFileSystemWatcher は、指定されたパスのリストを監視することで、ファイルシステム上のファイルやディレクトリの変更を監視します。

特定のファイルやディレクトリを監視するには、addPath() を呼び出します。addPaths() 関数を使用すると、複数のパスを追加することができます。removePath() およびremovePaths() 関数を使用すると、既存のパスを削除することができます。

QFileSystemWatcher は、追加された各パスを監視します。QFileSystemWatcher に追加されたファイルにはfiles() 関数を使用してアクセスでき、ディレクトリにはdirectories() 関数を使用してアクセスできます。

fileChanged() シグナルは、ファイルが変更されたり、名前が変更されたり、ディスクから削除されたりしたときに発火します。同様に、directoryChanged() シグナルは、ディレクトリまたはその内容が変更されたり、削除されたりしたときに発火します。なお、QFileSystemWatcher は、ファイルが名前変更されたりディスクから削除されたりするとそのファイルの監視を停止し、ディレクトリがディスクから削除されるとそのディレクトリの監視を停止することに注意してください。

  • 注:
    • inotify をサポートしていない Linux カーネルを実行しているシステムでは、監視対象のパスを含むファイルシステムをアンマウントすることはできません。
    • ファイルやディレクトリの変更を監視する処理は、システムリソースを消費します。したがって、プロセスが同時に監視できるファイルやディレクトリの数には制限があります。 たとえば、すべてのBSD系OSでは、監視対象のファイルごとにオープンファイルディスクリプタが必要です。一部のシステムでは、デフォルトでオープンファイルディスクリプタの数が256に制限されています。つまり、プロセスがファイルシステムモニターに256個を超えるファイルやディレクトリを追加しようとすると、addPath() およびaddPaths() は失敗します。 また、監視対象のファイル用のファイルディスクリプタに加えて、プロセスで他のファイルディスクリプタが開かれている場合があり、これらの開いているディスクリプタも合計数にカウントされる点に注意してください。macOSは異なるバックエンドを使用しているため、この問題の影響を受けません。

QFile およびQDirも参照してください 。

メンバ関数のドキュメント

QFileSystemWatcher::QFileSystemWatcher(QObject *parent = nullptr)

指定されたparent を使用して、新しいファイルシステムウォッチャーオブジェクトを作成します。

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

指定されたparent を使用して、指定されたpaths リストを監視する新しいファイルシステムウォッチャーオブジェクトを作成します。

[virtual noexcept] QFileSystemWatcher::~QFileSystemWatcher()

ファイルシステムウォッチャーを破棄します。

bool QFileSystemWatcher::addPath(const QString &path)

path が存在する場合、ファイルシステムウォッチャーにpath を追加します。存在しない場合、またはすでにファイルシステムウォッチャーによって監視されている場合は、パスは追加されません。

path がディレクトリを指定している場合、path が変更されたりディスクから削除されたりすると、directoryChanged() シグナルが発信されます。それ以外の場合は、path が変更、名前変更、または削除されたときに、fileChanged() シグナルが発信されます。

監視が成功した場合、trueが返されます。

監視が失敗する理由は一般的にシステムに依存しますが、リソースが存在しない、アクセスに失敗した、あるいはプラットフォームに制限がある場合は監視の合計数の上限に達した、などが考えられます。

注: 同時に監視できるファイルおよびディレクトリの数には、システムに依存する制限がある場合があります 。この制限に達した場合、path は監視されず、false が返されます。

関連項目: addPaths() およびremovePath()。

QStringList QFileSystemWatcher::addPaths(const QStringList &paths)

paths 内の各パスをファイルシステムウォッチャーに追加します。パスが存在しない場合、またはすでにファイルシステムウォッチャーによって監視されている場合は、パスは追加されません。

パスがディレクトリを指定している場合、そのパスが変更されたりディスクから削除されたりすると、directoryChanged()シグナルが発行されます。それ以外の場合は、パスが変更、名前変更、または削除された際に、fileChanged()シグナルが発行されます。

戻り値は、監視できなかったパスのリストです。

監視に失敗する理由は一般的にシステムに依存しますが、リソースが存在しない、アクセスに失敗した、あるいはプラットフォームに制限がある場合は監視総数の上限に達した、などが考えられます。

注: 同時に監視できるファイルやディレクトリの数には、システムに依存する制限がある場合があります 。この制限に達した場合、超過分のpaths は監視されず、返されるQStringList に追加されます。

addPath() およびremovePaths()も参照してください 。

QStringList QFileSystemWatcher::directories() const

監視対象のディレクトリへのパスのリストを返します。

files()も参照してください 。

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

このシグナルは、指定されたpath にあるディレクトリが変更された場合(例えば、ファイルが追加または削除された場合)、あるいはディスクから削除された場合に発信されます。短期間に複数の変更があった場合、一部の変更ではこのシグナルが発信されないことがある点に注意してください。ただし、一連の変更のうち最後の変更では、常にこのシグナルが生成されます。

注:これは プライベートシグナルです。シグナル接続では使用できますが、ユーザーが発行することはできません。

fileChanged()も参照してください 。

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

このシグナルは、指定されたpath にあるファイルが変更されたり、名前が変更されたり、ディスクから削除されたりしたときに発生します。

注: 安全対策として 、多くのアプリケーションは、新しいファイルを作成して古いファイルを削除するという方法で、開いているファイルを保存します。スロット関数内では、watcher.files().contains(path) を確認できます。これがfalse を返した場合は、ファイルがまだ存在するかどうかを確認し、addPath() を呼び出して監視を継続してください。

注:これは プライベートシグナルです。シグナル接続では使用できますが、ユーザーが発信することはできません。

directoryChanged()も参照してください 。

QStringList QFileSystemWatcher::files() const

監視対象のファイルへのパスのリストを返します。

directories()も参照してください 。

bool QFileSystemWatcher::removePath(const QString &path)

指定されたpath をファイルシステムウォッチャーから削除します。

ウォッチの削除に成功した場合、trueが返されます。

監視の削除に失敗する理由は一般的にシステムに依存しますが、例えば、パスがすでに削除されていることが原因である可能性があります。

removePaths() およびaddPath()も参照してください 。

QStringList QFileSystemWatcher::removePaths(const QStringList &paths)

指定されたpaths をファイルシステムウォッチャーから削除します。

戻り値は、監視解除に失敗したパスのリストです。

監視解除に失敗する理由は一般的にシステムに依存しますが、例えば、そのパスがすでに削除されていることが原因である場合があります。

removePath() および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.