2011-08-13 3 views
1

QFileSystemModel의 재 구현을 통해 채워지는 QTreeView가 있습니다. 내가 아는 한 QFileSystemModel은 rootPath에 QFileSystemWatcher를 설치합니다. 내가 뭘 하려는지 내 프로그램에서 파일이 루트 경로에 직접 삭제되었습니다 통지하지만, 그 정보를 제공하는 기능을 다시 구현 된 모든 신호를 발견 havent.디스크에서 QFileSystemModel 및 QFileSystemWatcher를 삭제합니다.

내 응용 프로그램은 ftp 연결을 통해 일부 파일을 업로드하고 파일이 완전히 업로드되면 위치에서 파일을 제거하므로 파일이 직접 삭제되었을 때 QFileSystemModel의 다시 구현에 대한 알림을 원합니다 (remove 메서드 또는 비슷한 것).

나는 당신이 나를 도울 수 있기를 바랍니다. 나는 웹에서 많은 것을 수색했으나 아무것도 찾을 수 없다.

건배.

답변

2

rowsAboutToBeRemoved 신호 (QAbstractItemModel에서 상속)를 사용할 수 있습니다.

행이 모델에서 제거 될 때마다 실행됩니다. parent, startend 매개 변수를 사용하면 파일 이름 (어린이의 열 0)을 가져올 수 있습니다.

샘플 코드 :

// once you have your model set up: 
... 
QObject::connect(model, SIGNAL(rowsAboutToBeRemoved(const QModelIndex&, int, int)), 
     receiver, SLOT(toBeRemoved(const QModelIndex&, int, int))); 
... 
// in receiver class: 
public slots: 
void toBeRemoved(const QModelIndex &parent, int start, int end) { 
    std::cout << start << " -> " << end << std::endl; 
    std::cout << parent.child(start, 0).data().typeName() << std::endl; 
    std::cout << qPrintable(parent.child(start, 0).data().toString()) << std::endl; 
} 

(표준 사용 :: cout을 내가 생각 Qt는 좋은 방법이 아닙니다, 이것은 당신이 시작하는 데 불과하다.)

다른 aboutToBe... QAbstractItemModel의 신호는 파일 시스템에서 발생하는 다른 이벤트에 사용될 수 있습니다.

+0

감사합니다. 그 기능에 대한 참조를 읽었지만 Qt Creator IDE에서 제안하지 않은 몇 가지 신호가 있습니다 (이유는 알지 못합니다). 그래서 전에 didnt 한 이유입니다. 다시 한번 감사드립니다. –

관련 문제