Russian Qt Forum

Qt => Model-View (MV) => Тема начата: dmsovetov от Декабрь 15, 2015, 13:49



Название: QFileSystemModel и полное сканирование папок
Отправлено: dmsovetov от Декабрь 15, 2015, 13:49
Добрый день.
Хотелось бы узнать, как можно заставить QFileSystemModel просканировать все папки начиная от корневого индекса модели.
Я пробовал дергать fetchMore, когда получаю сигнал directoryLoaded, но после этого там что-то ломается - перемещение файла просто валится на асерте внутри модели.

Вот так я пробовал сканировать:
Код:
void AssetsModel::directoryLoaded( const QString& path )
{
QModelIndex idx = index( path );

for( s32 i = 0, n = rowCount( idx ); i < n; i++ ) {
QModelIndex child = index( i, 0, idx );

if( canFetchMore( child ) ) {
fetchMode( child );
}
}
}

P.S. да, знаю что там специально сделано, чтоб грузилось по требованию, но у меня специфическая задача ::)


Название: Re: QFileSystemModel и полное сканирование папок
Отправлено: dmsovetov от Декабрь 16, 2015, 14:13
Кажется понял. Надо вот так цикл поменять:
Код:
for( int i = 0; i < rowCount( parent ); i++ ) {
    QModelIndex child = index( i, 0, parent );

    // --- canFetchMore возвращает true для файлов и из-за этого
    // --- все рушится, на скан надо отдавать только папки
    if( !fileInfo( child ).isDir() ) {
        continue;
    }

    if( canFetchMore( child ) ) {
        fetchMore( child );
    }
}