1

次のコードがあり、サブディレクトリが存在するかどうかを確認したいと思います。canFetchMore()fnがtrueを返すことを期待しています(ルートディレクトリにはサブディレクトリが含まれているため)。ただし、falseを返します。canFetchMore()fnを呼び出す前に呼び出す他のfnはありますか。

QFileSystemModel model;
model.setFilter(QDir::AllDirs);
model.setRootPath("/");
QModelIndex index = model.index(model.rootPath());
qDebug()<<index.child(0,0).isValid()<<model.canFetchMore(index)<<index;

hasChildren()fnを使用してみましたが、フォルダーにサブディレクトリが含まれているかどうかに関係なく、常にtrueが返されます。

4

1 に答える 1

1

奇妙なことに、これに関するドキュメントはありません。方法

  model.setRootPath("/");

自動的に呼び出しますmodel.fetchMore(index);。つまり、この時点ですべてのサブディレクトリがすでに検出されています。model.canFetchMore(index)フェッチするサブディレクトリがこれ以上ないため、呼び出しがfalseを返すのはそのためです。

それを行う1つの方法(QDirQFileInfoを使用):

QDir mytopdir("/path/to/dir");
if(mytopdir.exists()){
    QFileInfoList list = mytopdir.entryInfoList();
    foreach(QFileInfo fileInfo, list){
        if(fileInfo.isDir()){
            //FOUND IT!!
        }
    }
}
于 2012-09-24T09:54:53.760 に答える