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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSortFilterProxyModel и QModelIndex  (Прочитано 3980 раз)
TheBlade
Гость
« : Январь 20, 2010, 15:58 »

Здравствуйте.
Я использую 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 не отображаются файлы, но папки в которых они есть - с плюсиками. При нажатии на них плюсик пропадает. Как сделать так чтобы папки без подпапок сразу были без плюсика.
Записан
Kolobok
Гость
« Ответ #1 : Январь 20, 2010, 16:41 »

А зачем прокся?
Код:
model->setFilter( QDir::AllDirs | QDir::NoDotAndDotDot );
Записан
crossly
Гость
« Ответ #2 : Январь 20, 2010, 16:49 »

а не проще сделать слот.... в котором сначала узнать sourceIndex а потом вызвать setRootIndex
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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