2012-04-06 3 views
13

Je suis nouveau avec QT et je veux utiliser QFileSystemWatcher pour surveiller un dossier. Je ne peux pas comprendre comment faire ça. Je lis http://qt-project.org/doc/qt-4.8/qfilesystemwatcher.html mais je ne sais même pas comment l'initialiser.Comment utiliser QFileSystemWatcher pour surveiller un dossier pour le changement

Je n'ai pas trouvé un seul exemple, alors maintenant, je voudrais que quelqu'un puisse poster une explication ou un exemple simple qui surveille un dossier et rien de plus.

Oh, et cela est supposé fonctionner en console si c'est important.

Merci pour vos réponses et vos salutations.

Répondre

26

S'il vous plaît jeter un oeil à ce fichier .h et .cpp, il montre l'exemple ... à votre santé!

#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(); 
} 

Chaque fois que vous modifiez, ou créer ou supprimer un fichier ou un dossier dans « C:/QtTest » chemin vous obtiendrez une boîte de message.

Questions connexes