Здравствуйте.
Я использую QSortFilterProxyModel для того что бы не показывать файлы, а только папки в QTreeView.
model = new QFileSystemModel();
model->setRootPath(0);QSortFilterProxyModel *sfpm = new QSortFilterProxyModel();
sfpm->setSourceModel(model);
sfpm->setFilterRegExp(QRegExp("File Folder|Drive", Qt::CaseInsensitive,
QRegExp::RegExp));
sfpm->setFilterKeyColumn(2);
также model одновременно используется и QListView для просмотра содержимого папок и предпросмотра фотографий.
переход в папку по сигналу
connect(tView,SIGNAL(activated(QModelIndex)),lView,SLOT(setRootIndex(QModelIndex)));
tView - QListView
lView - QTreeView
К сожалению это не сработало, так как индексы прокси и исходной модели не соответствуют друг другу. В связи с этим я решил переопределить слот setRootIndex(QModelIndex) и извлечь из переданного индекса индекс исходной модели.
void MyListView::setRootIndex(QModelIndex &index)
{
QListView::setRootIndex(((QSortFilterProxyModel)index.model()).mapToSource(index));
}
Не вышло. Не смог привести тип...
Как это можно реализовать?
И второй вопрос косметического характера:
в QTreeView не отображаются файлы, но папки в которых они есть - с плюсиками. При нажатии на них плюсик пропадает. Как сделать так чтобы папки без подпапок сразу были без плюсика.