2014-06-05 2 views
1

변경 감지QT 내가 하위 폴더를 uncluding 디렉토리에 어떤 변화를 감지 할 디렉토리 및 하위 폴더

    : 내가 원하는 \ 드롭 박스 내 응용 프로그램이 표시
  • D : \ 보관 \ 폴더 1 \은 File2.txt
  • D 삭제 : \ 보관 \ 폴더 1 \ Folder2와는
  • D를 생성 : \ 보관 \ 대중이 ...
  • 수정

나는 인터넷이 exemple를 발견하지만, 그것은 단지 간단한 메시지 보여

는 몸이 나를 도울 수주십시오 "디렉토리가 변경됩니다"?

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

넌 무엇을 알고 싶니? –

+0

@ MuratŞeker : 게시물의 시작 부분을 읽으십시오. – lpapp

+0

user3711966, 대답이 빠졌습니까? – lpapp

답변

4

내가 인터넷에서이 exemple를 발견하지만, 그것은 단지 간단한 메시지를 표시 : "디렉토리가 변경됩니다"

수정, Qt를하고 QFileSystemWatcher는 지금과 같은 당신을 위해 더 많은 일을 할 수 없습니다 . 당신은 지원을 확장 할 계획에 대해 자세한 내용을보실 수 있습니다하지만 아직되지 않습니다 :

http://blog.rburchell.com/2012/03/qt-51-aka-when-qfilesystemwatcher-might.html

당신은 각 플랫폼에 자신이 구현해야 할 것입니다,하지만 당신은 정말로하는 경우, 당신이 말할 수 Robin은 공동 작업을했습니다.

을 긴 안목으로 보면, 나는 fileChanged 전화 사용되지 directoryChanged 계획 :

여기에 블로그 게시물의 일부가 계획되고 있었는지 보는 것입니다. 그들은 여전히 ​​(물론) 기존의 코드가 작동하도록 유지하기 위해 방출됩니다. 또한, (검토 대상) :

pathCreated (경로) - 모니터링중인 디렉토리 내에 무언가가 생성 될 때 방출됩니다. 또는 만약 당신이 (더 나중에에) 생성에 대한 모니터링 한 것을 존재하지 않는 무언가

pathDeleted (경로) - 뭔가가 당신 을 있었던 당신은 모니터링 된 디렉토리, 또는 뭔가 내부에서 삭제 될 때 방출 모니터링이 삭제되었습니다.

fileModified (경로) - 모니터링 한 파일이 수정 된 경우 (속성 또는 내용)

또한 pathMoved (oldLocation, newLocation)를 소개하겠다는 초기 계획이 있지만 그 중 하나는 많은주의 사항이 있습니다. 달의 특정 단계에서만 특정 플랫폼에서만 작동 할 수 있습니다. 운이 좋으면 - 많은 플랫폼에서 pathDeleted (oldPath)와 pathCreated (newPath)로 계속 합성 될 것입니다 (새 위치를보고있는 경우).

나는이의 맨 위에 더 구문 친화적 인 API를 도입에 대한 막연한 아이디어를 가지고, 뭔가 같은 :

QPathMonitor pathMonitor (MYPATH);

connect (& pathMonitor, SIGNAL (삭제됨)), SLOT (감시 됨 경로 삭제됨()));

... 등 ...

을하지만 더 멀리 난 정말 아직 그것을 통해 생각하지 않은 점에서 조금입니다.

관련 문제