Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QFileSystemWatcher Class Reference

\inmodule QtCore More...

#include <qfilesystemwatcher.h>

+ Inheritance diagram for QFileSystemWatcher:
+ Collaboration diagram for QFileSystemWatcher:

Signals

void fileChanged (const QString &path, QPrivateSignal)
 This signal is emitted when the file at the specified path is modified, renamed or removed from disk.
 
void directoryChanged (const QString &path, QPrivateSignal)
 This signal is emitted when the directory at a specified path is modified (e.g., when a file is added or deleted) or removed from disk.
 
- Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
 
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.
 

Public Member Functions

 QFileSystemWatcher (QObject *parent=nullptr)
 Constructs a new file system watcher object with the given parent.
 
 QFileSystemWatcher (const QStringList &paths, QObject *parent=nullptr)
 Constructs a new file system watcher object with the given parent which monitors the specified paths list.
 
 ~QFileSystemWatcher ()
 Destroys the file system watcher.
 
bool addPath (const QString &file)
 Adds path to the file system watcher if path exists.
 
QStringList addPaths (const QStringList &files)
 Adds each path in paths to the file system watcher.
 
bool removePath (const QString &file)
 Removes the specified path from the file system watcher.
 
QStringList removePaths (const QStringList &files)
 Removes the specified paths from the file system watcher.
 
QStringList files () const
 Returns a list of paths to files that are being watched.
 
QStringList directories () const
 Returns a list of paths to directories that are being watched.
 
- Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
 
virtual bool event (QEvent *event)
 This virtual function receives events to an object and should return true if the event e was recognized and processed.
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
 
QString objectName () const
 
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
 
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QBindable< QStringbindableObjectName ()
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
 
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
 
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
 
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
 
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
 
QThreadthread () const
 Returns the thread in which the object lives.
 
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
 
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
 
int startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
 
void killTimer (int id)
 Kills the timer with timer identifier, id.
 
void killTimer (Qt::TimerId id)
 
template<typename T >
findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
 
template<typename T >
QList< T > findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects.
 
template<typename T >
findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<typename T >
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const QObjectListchildren () const
 Returns a list of child objects.
 
void setParent (QObject *parent)
 Makes the object a child of parent.
 
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
 
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
 
bool disconnect (const QObject *receiver, const char *member=nullptr) const
 
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
 
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
 
bool setProperty (const char *name, QVariant &&value)
 
QVariant property (const char *name) const
 Returns the value of the object's name property.
 
QList< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () const
 Returns a pointer to the parent object.
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false.
 

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 
- Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
 
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
 
template<typename Func1 , typename Func2 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
 
template<typename Func1 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
 
virtual void childEvent (QChildEvent *event)
 This event handler can be reimplemented in a subclass to receive child events.
 
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Detailed Description

\inmodule QtCore

The QFileSystemWatcher class provides an interface for monitoring files and directories for modifications.

Since
4.2 \reentrant

QFileSystemWatcher monitors the file system for changes to files and directories by watching a list of specified paths.

Call addPath() to watch a particular file or directory. Multiple paths can be added using the addPaths() function. Existing paths can be removed by using the removePath() and removePaths() functions.

QFileSystemWatcher examines each path added to it. Files that have been added to the QFileSystemWatcher can be accessed using the files() function, and directories using the directories() function.

The fileChanged() signal is emitted when a file has been modified, renamed or removed from disk. Similarly, the directoryChanged() signal is emitted when a directory or its contents is modified or removed. Note that QFileSystemWatcher stops monitoring files once they have been renamed or removed from disk, and directories once they have been removed from disk.

\list

  • Notes: \list
  • On systems running a Linux kernel without inotify support, file systems that contain watched paths cannot be unmounted.
  • The act of monitoring files and directories for modifications consumes system resources. This implies there is a limit to the number of files and directories your process can monitor simultaneously. On all BSD variants, for example, an open file descriptor is required for each monitored file. Some system limits the number of open file descriptors to 256 by default. This means that addPath() and addPaths() will fail if your process tries to add more than 256 files or directories to the file system monitor. Also note that your process may have other file descriptors open in addition to the ones for files being monitored, and these other open descriptors also count in the total. \macos uses a different backend and does not suffer from this issue. \endlist \endlist
See also
QFile, QDir

Definition at line 16 of file qfilesystemwatcher.h.

Constructor & Destructor Documentation

◆ QFileSystemWatcher() [1/2]

QFileSystemWatcher::QFileSystemWatcher ( QObject * parent = nullptr)

Constructs a new file system watcher object with the given parent.

Definition at line 220 of file qfilesystemwatcher.cpp.

◆ QFileSystemWatcher() [2/2]

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

Constructs a new file system watcher object with the given parent which monitors the specified paths list.

Definition at line 230 of file qfilesystemwatcher.cpp.

References addPaths().

+ Here is the call graph for this function:

◆ ~QFileSystemWatcher()

QFileSystemWatcher::~QFileSystemWatcher ( )

Destroys the file system watcher.

Definition at line 240 of file qfilesystemwatcher.cpp.

Member Function Documentation

◆ addPath()

bool QFileSystemWatcher::addPath ( const QString & path)

Adds path to the file system watcher if path exists.

The path is not added if it does not exist, or if it is already being monitored by the file system watcher.

If path specifies a directory, the directoryChanged() signal will be emitted when path is modified or removed from disk; otherwise the fileChanged() signal is emitted when path is modified, renamed or removed.

If the watch was successful, true is returned.

Reasons for a watch failure are generally system-dependent, but may include the resource not existing, access failures, or the total watch count limit, if the platform has one.

Note
There may be a system dependent limit to the number of files and directories that can be monitored simultaneously. If this limit is been reached, path will not be monitored, and false is returned.
See also
addPaths(), removePath()

Definition at line 266 of file qfilesystemwatcher.cpp.

References addPaths(), and qWarning.

Referenced by QV4L2CameraDevices::QV4L2CameraDevices().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addPaths()

QStringList QFileSystemWatcher::addPaths ( const QStringList & paths)

Adds each path in paths to the file system watcher.

Paths are not added if they not exist, or if they are already being monitored by the file system watcher.

If a path specifies a directory, the directoryChanged() signal will be emitted when the path is modified or removed from disk; otherwise the fileChanged() signal is emitted when the path is modified, renamed, or removed.

The return value is a list of paths that could not be watched.

Reasons for a watch failure are generally system-dependent, but may include the resource not existing, access failures, or the total watch count limit, if the platform has one.

Note
There may be a system dependent limit to the number of files and directories that can be monitored simultaneously. If this limit has been reached, the excess paths will not be monitored, and they will be added to the returned QStringList.
See also
addPath(), removePaths()

Definition at line 311 of file qfilesystemwatcher.cpp.

References d, empty_paths_pruned(), engine, QString::mid(), QObject::objectName, Q_UNLIKELY, qCDebug, qWarning, and QString::startsWith().

Referenced by QFileSystemWatcher(), and addPath().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ directories()

QStringList QFileSystemWatcher::directories ( ) const

Returns a list of paths to directories that are being watched.

See also
files()

Definition at line 451 of file qfilesystemwatcher.cpp.

References d.

◆ directoryChanged

void QFileSystemWatcher::directoryChanged ( const QString & path,
QPrivateSignal  )
signal

This signal is emitted when the directory at a specified path is modified (e.g., when a file is added or deleted) or removed from disk.

Note that if there are several changes during a short period of time, some of the changes might not emit this signal. However, the last change in the sequence of changes will always generate this signal.

See also
fileChanged()

Referenced by QV4L2CameraDevices::QV4L2CameraDevices().

+ Here is the caller graph for this function:

◆ fileChanged

void QFileSystemWatcher::fileChanged ( const QString & path,
QPrivateSignal  )
signal

This signal is emitted when the file at the specified path is modified, renamed or removed from disk.

Note
As a safety measure, many applications save an open file by writing a new file and then deleting the old one. In your slot function, you can check watcher.files().contains(path). If it returns false, check whether the file still exists and then call addPath() to continue watching it.
See also
directoryChanged()

Referenced by QmlLsp::QQmlCodeModel::~QQmlCodeModel(), and QmlLsp::QQmlCodeModel::disableCMakeCalls().

+ Here is the caller graph for this function:

◆ files()

QStringList QFileSystemWatcher::files ( ) const

Returns a list of paths to files that are being watched.

See also
directories()

Definition at line 457 of file qfilesystemwatcher.cpp.

References d.

Referenced by QmlLsp::QQmlCodeModel::disableCMakeCalls().

+ Here is the caller graph for this function:

◆ removePath()

bool QFileSystemWatcher::removePath ( const QString & path)

Removes the specified path from the file system watcher.

If the watch is successfully removed, true is returned.

Reasons for watch removal failing are generally system-dependent, but may be due to the path having already been deleted, for example.

See also
removePaths(), addPath()

Definition at line 365 of file qfilesystemwatcher.cpp.

References qWarning, and removePaths().

+ Here is the call graph for this function:

◆ removePaths()

QStringList QFileSystemWatcher::removePaths ( const QStringList & paths)

Removes the specified paths from the file system watcher.

The return value is a list of paths which were not able to be unwatched successfully.

Reasons for watch removal failing are generally system-dependent, but may be due to the path having already been deleted, for example.

See also
removePath(), addPaths()

Definition at line 387 of file qfilesystemwatcher.cpp.

References d, empty_paths_pruned(), qCDebug, and qWarning.

Referenced by QmlLsp::QQmlCodeModel::disableCMakeCalls(), and removePath().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

The documentation for this class was generated from the following files: