2011-08-13 6 views
1

私はQFreeSystemModelの再実装を通じて実装されたQTreeViewを持っています。私の知る限り、QFileSystemModelはrootPathにQFileSystemWatcherをインストールします。私がやろうとしているのは、ファイルがrootPath上で直接的に削除されているときに私のプログラムに通知することですが、その情報を提供する関数を再実装した信号は見つかりません。QFileSystemModelとQFileSystemWatcherをディスクから削除します。

私のアプリケーションはftp接続を介していくつかのファイルをアップロードします。ファイルが完全にアップロードされると、その場所からファイルが削除されるため、QFileSystemModelの再実装からの通知が必要です。似たような)。

私はあなたが私を助けることを願っています。私はウェブ上で多くを検索したが、何も見つけることができない。

乾杯。

答えて

2

rowsAboutToBeRemoved信号(QAbstractItemModelから継承)を使用できます。

モデルから行が削除されるたびに発生します。 parentstartおよびendのパラメータを使用すると、ファイル名(子の列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; 
} 

(STDを使用して:: coutのは、私が考えるのQtに良い習慣ではない、これはちょうどあなたが始めることです。)

aboutToBe... QAbstractItemModelからの信号は、ファイルシステム上で発生する他のイベントに使用できます。

+0

ありがとうございました!私はリファレンスでその機能について読んだことがありますが、Qt Creator IDE(これを含む)によって提案されていないシグナルがいくつかあります。再度、感謝します。 –

関連する問題