Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Caduceus от Январь 26, 2009, 17:11



Название: Как сделать чтоб разные представления тянули из одной модели разные части?
Отправлено: Caduceus от Январь 26, 2009, 17:11
Вот например мождель QFileSystemModel и два вида QListView. Я хочу чтоб в одном обображались только папки, а в другом только файлы. Что надо сделать в модели или в видах?


Название: Re: Как сделать чтоб разные представления тянули из одной модели разные части?
Отправлено: ритт от Январь 26, 2009, 17:27
в видах установить фильтрацию. если виды фильтрацию не поддерживают, воспользоваться Q*ProxyModel


Название: Re: Как сделать чтоб разные представления тянули из одной модели разные части?
Отправлено: kirill от Январь 26, 2009, 18:24
Виды фильтрацию не поддерживают. Ее поддерживают модели, но делают это крайне криво.
Почитай мой пост на эту тему
http://www.prog.org.ru/topic_8424_0.html (http://www.prog.org.ru/topic_8424_0.html)


Название: Re: Как сделать чтоб разные представления тянули из одной модели разные части?
Отправлено: ритт от Январь 26, 2009, 19:24
виды фильтрацию поддерживают - равно как и сортировку. а вот модели поддерживают только фильтрацию исходных данных.
и не стОит говорить про кривость этой-самой фильтрации, прикрываясь найденной багой в сравнительно молодой модели...

Caduceus, смотри QSortFilterProxyModel и examples/itemviews/dirview


Название: Re: Как сделать чтоб разные представления тянули из одной модели разные части?
Отправлено: Caduceus от Январь 26, 2009, 23:34
Хммм, сделал. И у папок в дереве пропали крестики :(
FilesTreeFilterModel* treeFilter = new FilesTreeFilterModel(this);
   treeFilter->setSourceModel(model);

   treeView->setModel(treeFilter);
   QModelIndex idx = treeFilter->mapFromSource(model->index(QDir::rootPath()) );
   treeView->setRootIndex(idx);

Тут уже спрашивали про это - но ответа не было



Название: Re: Как сделать чтоб разные представления тянули из одной модели разные части?
Отправлено: kirill от Январь 27, 2009, 05:50
Крестики - это что? Плюсики штоли?
treeView->setRootIsDecorated(true);

не помогает?


Название: Re: Как сделать чтоб разные представления тянули из одной модели разные части?
Отправлено: Caduceus от Январь 27, 2009, 10:46
Да, крестики - это плюсики
Нет, не помагает

Есть мысль по этому поводу. Я использую QFileSystemModel - и он вроде для ускорения работы не заполняет папку, пока та не раскрыта - то есть он не знает, есть что в папке или нет? Эту мысль подтверждает то, что крестик-плюсик таки появляется, если на папку кликнуть и во втором виде показывается её содержимое - вот после этого крестик у этой папки появляется

Как разрулить-то?


Название: Re: Как сделать чтоб разные представления тянули из одной модели разные части?
Отправлено: kirill от Январь 27, 2009, 11:22
Может все таки воспользоваться QDirModel?


Название: Re: Как сделать чтоб разные представления тянули из одной модели разные части?
Отправлено: Caduceus от Январь 27, 2009, 11:40
Да чё-т склоняюсь все больше к тому что свою модель и виды писать надо. Для примитивной работы с файлами и папками - QFileSysytem и QDirModel подходят идеально. Но чуть шаг влево , шаг вправо с необычным функцилоналом - и все, расстрел