Russian Qt Forum

Qt => Model-View (MV) => Тема начата: leonike от Июль 28, 2010, 13:46



Название: фильтрация в qfilesystemmodel
Отправлено: leonike от Июль 28, 2010, 13:46
В приложении реальзовать небольшой просмотрщик фалов со скромным функционалом, выглядеть это должно как одна панель TotalCommander, т.е. список директорий и папок, а вверху знак '..', для перехода на верхний каталог.

Использую QFileSystemModel, для сортировки используюю модель, унаследованную от QSortFilterProxyModel. Вьювер - QTreeView.

Столкнуля со следующими проблемами:
1) Как избавиться от отображения знака '.' ?
2) В Windows отображается только содержимое диска C:\, не знаю как перейти на другой диск
3) Если в винде в корне (т.е. в C:\) знак '.' и '..' не отображаются, то в линухе в '/' отображаются оба знака

Думаю, что нужно следить за текущим каталогом и ставить setFilterRegExp


Версия Qt  - 4.6


Название: Re: фильтрация в qfilesystemmodel
Отправлено: toshcka от Июль 28, 2010, 14:02
проблему знака '.' и '..' в '/' в linux можно решить установкой фильтра NoDotAndDotDot к QFileSysteModel


Название: Re: фильтрация в qfilesystemmodel
Отправлено: leonike от Июль 28, 2010, 14:38
проблему знака '.' и '..' в '/' в linux можно решить установкой фильтра NoDotAndDotDot к QFileSysteModel
спасибо :)

над остальными проблемами пока ломаю голову


Название: Re: фильтрация в qfilesystemmodel
Отправлено: leonike от Июль 28, 2010, 18:51
мб кому пригодиться, фильтрацию директории '.' можно осуществлять следующим образом:

bool SortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
{
    QModelIndex index = m_sourceModel->index(source_row, 0, source_parent);
    return (sourceModel()->fileInfo(index).fileName() != ".");
}