Russian Qt Forum
Сентябрь 30, 2024, 02:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перемещение по QFileSystemModel  (Прочитано 7111 раз)
kalif
Гость
« : Декабрь 28, 2010, 11:06 »

Приветствую.
Имеется QFileSystemModel в QTableView.
Никак не могу сообразить как перемещаться по папкам в модели. Подскажите пожалуйста.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Декабрь 28, 2010, 11:12 »

QModelIndex QFileSystemModel::setRootPath ( const QString & newPath )
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
kalif
Гость
« Ответ #2 : Декабрь 28, 2010, 11:26 »

Так пробовал, почему-то не работает.
При выставлении любого newPath, всегда отображается корневой каталог, причем не его содержимое, а только он сам.
Записан
Fat-Zer
Гость
« Ответ #3 : Декабрь 28, 2010, 17:15 »

при дабл клике на каталог меняете корень
Записан
kalif
Гость
« Ответ #4 : Январь 02, 2011, 21:31 »

Как перемещать разобрался.
Теперь проблема как получить список файлов в текущей директории. Если пройтись по индексам модели, то там будет лишь корень.
Код примерно такой:
Код:
model.setRootPath("C:/Games/");
qDebug() <<model.rowCount();  //выдаст нам 1
for (int i=0;i<model.rowCount();i++) {
    qDebug() <<model.index(i,0).data().toString(); //сдесь получим лишь "C:"
}

Записан
Fat-Zer
Гость
« Ответ #5 : Январь 02, 2011, 23:50 »

Код
C++ (Qt)
QModelIndex rp=model.setRootPath("C:/Games/");
qDebug() <<model.rowCount(rp);  //выдаст нам 1
for (int i=0;i<model.rowCount(rp);i++) {
   qDebug() <<model.index(i,0,rp).data().toString(); //сдесь получим лишь "C:"
}
 
Как-то так, если не задумыватьться... хотя быдлокодом попахивает...
Записан
kalif
Гость
« Ответ #6 : Январь 03, 2011, 10:49 »

Спасибо, помогло  Улыбающийся
А еще не подскажете как узнать когда модель заполнила себя при смене каталога? В документации сказано, что модель заполняет себя в отдельном потоке, но ни слова ни сказано как узнать когда заполнение закончено.
Записан
Fat-Zer
Гость
« Ответ #7 : Январь 03, 2011, 11:05 »

что значит "модель заполнила себя"?
Записан
kalif
Гость
« Ответ #8 : Январь 03, 2011, 11:12 »

Это значит, что она получила список файлов в каталоге.
Записан
Fat-Zer
Гость
« Ответ #9 : Январь 03, 2011, 11:41 »

=\ На ум приходит только то, что он должен сигнал dataChanged или rowsInserted посылать... а как конкретно заполнение отловить - не знаю....
« Последнее редактирование: Январь 03, 2011, 11:44 от Fat-Zer » Записан
kalif
Гость
« Ответ #10 : Январь 05, 2011, 12:45 »

Оказывается есть сигнал directoryLoaded(QString), он то как раз и вызывается при окончании заполнения модели.
« Последнее редактирование: Январь 05, 2011, 12:56 от kalif » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.078 секунд. Запросов: 23.