2012-04-06 25 views
13

Tôi mới sử dụng QT và tôi muốn sử dụng QFileSystemWatcher để theo dõi một thư mục. Tôi chỉ không thể tìm ra cách để làm điều đó.Cách sử dụng QFileSystemWatcher để theo dõi một thư mục để thay đổi

Tôi đọc http://qt-project.org/doc/qt-4.8/qfilesystemwatcher.html nhưng tôi không biết cách khởi tạo ngay cả.

Tôi chưa tìm thấy một ví dụ, vì vậy bây giờ, tôi xin vui lòng nếu ai đó có thể đăng một lời giải thích hoặc một ví dụ đơn giản theo dõi một thư mục và không có gì khác.

Ồ, và điều này được cho là chạy trong bảng điều khiển nếu có vấn đề.

Thx cho câu trả lời của bạn và liên quan.

Trả lời

26

Vui lòng xem tại đây .h và .cpp, nó hiển thị ví dụ ... chúc mừng!

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

Khi bao giờ bạn sửa đổi hoặc tạo hoặc xóa một tập tin hoặc thư mục trong "C:/QtTest" đường dẫn mà bạn sẽ nhận được một hộp thông báo.

Các vấn đề liên quan