15

Вопрос по c++ – Как использовать QFileSystemWatcher для мониторинга папки на предмет изменений

Я новичок в QT и хочу использовать QFileSystemWatcher для мониторинга папки. Я просто не могу понять, как это сделать.

Я читаюhttp://qt-project.org/doc/qt-4.8/qfilesystemwatcher.html но я не знаю, как его инициализировать.

Я не нашел ни одного примера, так что теперь, пожалуйста, могу ли кто-нибудь опубликовать объяснение или простой пример, который отслеживает папку и ничего более.

О, и это должно работать в консоли, если это имеет значение.

Спасибо за ваши ответы и пожелания.

  • 28

    Пожалуйста

    посмотрите на эти .h и .cpp, это показывает пример ... ура!

    #ifndef MYCLASS_H
    #define MYCLASS_H
    
    #include <QWidget>
    #include <QMessageBox>
    
    class MyClass : public QWidget
    {
        Q_OBJECT
    
    public:
        MyClass(QWidget* parent=0)
            :QWidget(parent){}
    
        ~MyClass(){}
    
    public slots:
        void showModified(const QString& str)
        {
            Q_UNUSED(str)
            QMessageBox::information(this,"Directory Modified", "Your Directory is modified");
        }
    };
    
    #endif // MYCLASS_H
    
    
    
    #include <QApplication>
    #include <QFileSystemWatcher>
    #include <QDebug>
    
    #include "MyClass.h"
    
    int main(int argc, char* argv[])
    {
        QApplication app(argc, argv);
        QFileSystemWatcher watcher;
        watcher.addPath("C:/QtTest");
    
        QStringList directoryList = watcher.directories();
        Q_FOREACH(QString directory, directoryList)
                qDebug() << "Directory name" << directory <<"\n";
    
        MyClass* mc = new MyClass;
    
        QObject::connect(&watcher, SIGNAL(directoryChanged(QString)), mc, SLOT(showModified(QString)));
    
        return app.exec();
    }
    

    Когда вы изменяете, создаете или удаляете файл или папку в & quot; C: / QtTest & quot; Путь вы получите окно сообщения.