用QFileSystemWatcher實現簡易的檔案監控程式
QFileSystemWatcher類用於監控檔案或目錄的變化
--當檔案或目錄發生變化時觸發訊號
--通過訊號與槽機制捕捉觸發訊號
程式碼如下:
//main.cpp
#include <QtCore/QCoreApplication>
#include "Watcher.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Watcher watcher;
watcher.addPath("C:/Users/hp/Desktop/text.txt");
watcher.addPath("C:/Users/hp/Desktop/QDir");
return a.exec();
}
//Watcher.h
#ifndef _WATCHER_H_
#define _WATCHER_H_
#include <QObject>
#include <QFileSystemWatcher>
class Watcher : public QObject
{
Q_OBJECT
QFileSystemWatcher m_watcher;
private slots:
void statusChanged(const QString& path);
public:
explicit Watcher(QObject *parent = 0); //C++提供了關鍵字explicit,可以阻止不應該允許的經過轉換建構函式進行的隱式轉換的發生,宣告為explicit的建構函式不能在隱式轉換中使用。
void addPath(QString path);
};
#endif // WATCHER_H
//Watcher.cpp
#include "Watcher.h"
#include <QDebug>
Watcher::Watcher(QObject *parent) : QObject(parent)
{
connect(&m_watcher, SIGNAL(fileChanged(const QString&)), this, SLOT(statusChanged(const QString&))); //訊號與槽機制捕捉檔案改變訊號
connect(&m_watcher, SIGNAL(directoryChanged(const QString&)), this, SLOT(statusChanged(const QString&)));
}
void Watcher::statusChanged(const QString &path)
{
qDebug() << path << "is changed!";
}
void Watcher::addPath(QString path) //新增要監控的檔案路徑,可有多個
{
m_watcher.addPath(path);
}
//文章參考狄泰軟體學院Qt視訊教程