// main.cpp
#include <QtCore/QCoreApplication>
#include "Watcher.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Watcher w;
return a.exec();
}
// Watcher.h
#pragma once
#include <QObject>
#include <qdebug.h>
#include <qdir.h>
#include <qfilesystemwatcher.h>
class Watcher : public QObject
{
Q_OBJECT
public:
explicit Watcher(QObject *parent = nullptr);
~Watcher();
signals:
public slots:
void fileChanged(const QString & path);
void directoryChanged(const QString& path);
private:
QFileSystemWatcher fsw;
};
// Watcher.cpp
#include "Watcher.h"
Watcher::Watcher(QObject *parent)
: QObject(parent)
{
fsw.addPath(QDir::currentPath());
fsw.addPath(QDir::currentPath() + QDir::separator() + "test.txt");
connect(&fsw, &QFileSystemWatcher::fileChanged, this, &Watcher::fileChanged);
connect(&fsw, &QFileSystemWatcher::directoryChanged, this, &Watcher::directoryChanged);
}
Watcher::~Watcher()
{
}
void Watcher::fileChanged(const QString& path)
{
qInfo() << "File changed: " << path;
if (fsw.files().length()) {
qInfo() << "Files that have changed: ";
foreach(QString file, fsw.files()) {
qInfo() << file;
}
}
}
void Watcher::directoryChanged(const QString& path)
{
qInfo() << "directory changed: " << path;
if (fsw.files().length()) {
qInfo() << "Dir that have changed: ";
foreach(QString dir, fsw.directories()) {
qInfo() << dir;
}
}
}