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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFileSystemModel и неотображение флопиков  (Прочитано 3866 раз)
Smogg
Гость
« : Ноябрь 28, 2014, 11:51 »

Как заставить пропускать драйвы A:/ и B:/ для отображения? Или, чтоб при при запуске не лез в них. А то секунд 10 тормозит, ожидая отклика от несуществующего драйва (который винда показывает, что есть, но физически его нет)
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #1 : Ноябрь 28, 2014, 11:52 »

На сколько я помню, никак. Только фильтр попробовать добавить, в котором убрать их.
Записан

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

На сколько я помню, никак. Только фильтр попробовать добавить, в котором убрать их.
Попытался так:
Код:
MyFileSystemModel::MyFileSystemModel(QObject *parent):
QFileSystemModel(parent)
{
this->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs);
// this->setFilter((QDir::NoDotAndDotDot | QDir::AllDirs) & (~QDir::Drives));
this->setRootPath("c:/55/");
}
Один бес дерево отбражается с самого-самого корня, т.е. захватывая все драйвы. Просто С:/ разворачивается до директории "55"... Что с раскомментированной строчкой, что так...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #3 : Ноябрь 28, 2014, 12:54 »

Вьюхе задай.
Код:
tree->setRootIndex(model->index(QDir::currentPath()));

Зачем наследоваться?
Записан

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

Вьюхе задай.
Код:
tree->setRootIndex(model->index(QDir::currentPath()));

Зачем наследоваться?

Попробовал так, с заданием вьюхе:
Код:
mdlDir = new QFileSystemModel(this);
mdlDir->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs);
QModelIndex idx = mdlDir->index("C:/");
ui.treeDir->setRootIndex(idx);

Драйв С показывается, но не раскрывается, и зачем-то вылез каррентПаф...


А если установить в модели RootPath, то ничего не меняется. Все также изначально показываются все драйвы.  И даже expand не срабатывает:
Код:
	mdlDir = new QFileSystemModel(this);
mdlDir->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs);
// QModelIndex idx = mdlDir->index("C:/");
//  mdlDir->setRootPath("C:/");
QModelIndex idx = mdlDir->index("c:\\!VS\\");
mdlDir->setRootPath("c:\\!VS\\");
QString ss = mdlDir->filePath(idx);
ui.treeDir->setRootIndex(idx);
ui.treeDir->expand(idx);
Записан
Smogg
Гость
« Ответ #5 : Ноябрь 28, 2014, 14:02 »

Разобрался.
Порядок операций был неправилен)
Сначала нужно было назначить модель для вьюхи, а потом уже устанавливать RootIndex.
Код:
	mdlDir = new QFileSystemModel(this);	
mdlDir->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs);
mdlDir->setRootPath("c:/");

ui.treeDir->setModel(mdlDir);
QModelIndex idx = mdlDir->index("c:/");
ui.treeDir->setRootIndex(idx);
Теперь вью не дергает ничего выше РутИндекса)))
« Последнее редактирование: Ноябрь 29, 2014, 01:44 от Smogg » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #6 : Ноябрь 28, 2014, 14:08 »

Код:
mdlDir = new QFileSystemModel(this);
mdlDir->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs);
const QModelIndex idx = mdlDir->setRootPath("C:/");
ui.treeDir->setRootIndex(idx);
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Smogg
Гость
« Ответ #7 : Ноябрь 29, 2014, 01:49 »

Код:
mdlDir = new QFileSystemModel(this);
mdlDir->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs);
const QModelIndex idx = mdlDir->setRootPath("C:/");
ui.treeDir->setRootIndex(idx);
) можно и так.

Но все равно, QFileSystemModel - жутко тормознутая гадость( Везде она суется как образец, а на деле - издевательство и нервотрепка. Так и не сумел добиться адеквата. На каждое открытие каталога тратится секунда минимум... 
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #8 : Декабрь 01, 2014, 09:28 »

Время может на иконки тратиться. Попробуй отнаследоваться от QFileSystemModel и в методе data вернуть на Qt::DecorationRole пустой QVariant, а на остальные вернуть QFileSystemModel::data. Может, поможет. Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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