Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Иконки и текст в связке QListView + QFileSystemModel
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Модель/Представление
r485_post
Здравствуйте.

Казалось бы, как всё просто .... , если не углубляться!

Проблема в том, что QFileSystemModel задаёт свои стандартные иконки. Мне нужно для определённых файлов задать свои собственные. Вопрос - как это сделать без велосипедов ? Мне теперь что, строить свою QStandardItemModel ? (И зачем тогда нужен QFileIconProvider, если в нем ничего не задаётся ?)

Хочу в надписях итемов отображать только baseName. Если принудительно задать каждому setData ( index, "произвольный текст", Qt::DisplayRole ), то ничего не произойдёт. Вероятно QFileSystemModel обратно возвращает всё на свои места. Неужели никто не боролся с этой ветряной мельницей ?

Если в QListView всунуть QSortFilterProxyModel, а в QSortFilterProxyModel, в свою очередь, всунуть QFileSystemModel, то можно фильтровать файлы - прекрасно ! Но сортировка применяется ко всем элементам QSortFilterProxyModel, а это значит, что непопавшие элементы вылетают (наверное) из QSortFilterProxyModel, что приводит к изменению rootIndex в QListView. Таким образом после фильтрации мы наблюдаем в QListView не ту папку которую установили в качестве rootIndex, а самую корневую - хреново ! Так что сортирую вручную простым перебором элементов в папке, делая им setRowHidden ( 0, bool условие видимости ).

Litkevich Yuriy
Цитата(r485_post @ 14.11.2010, 2:12) *
а это значит, что непопавшие элементы
что значит не попавшие?

Цитата(r485_post @ 14.11.2010, 2:12) *
Вопрос - как это сделать без велосипедов ? Мне теперь что, строить свою QStandardItemModel ?
через свою ProxyModel, для определённого типа файлов для DecorationRole возвращать подходящую картинку
r485_post
Цитата(r485_post @ 13.11.2010, 23:12) *
Здравствуйте.

Казалось бы, как всё просто .... , если не углубляться!

Проблема в том, что QFileSystemModel задаёт свои стандартные иконки. Мне нужно для определённых файлов задать свои собственные. Вопрос - как это сделать без велосипедов ? Мне теперь что, строить свою QStandardItemModel ? (И зачем тогда нужен QFileIconProvider, если в нем ничего не задаётся ?)

Хочу в надписях итемов отображать только baseName. Если принудительно задать каждому setData ( index, "произвольный текст", Qt::DisplayRole ), то ничего не произойдёт. Вероятно QFileSystemModel обратно возвращает всё на свои места. Неужели никто не боролся с этой ветряной мельницей ?

Если в QListView всунуть QSortFilterProxyModel, а в QSortFilterProxyModel, в свою очередь, всунуть QFileSystemModel, то можно фильтровать файлы - прекрасно ! Но сортировка применяется ко всем элементам QSortFilterProxyModel, а это значит, что непопавшие элементы вылетают (наверное) из QSortFilterProxyModel, что приводит к изменению rootIndex в QListView. Таким образом после фильтрации мы наблюдаем в QListView не ту папку которую установили в качестве rootIndex, а самую корневую - хреново ! Так что сортирую вручную простым перебором элементов в папке, делая им setRowHidden ( 0, bool условие видимости ).


:D Решение первого вопроса уже придумал замечательный человек вот здесь http://www.prog.org.ru/topic_15452_0.HTML . Суть в том, чтобы нарисовать стилизованый делегат. А вот примеров стилизованного делегата я в документации Qt не видел (наверное плохо искал).

"не попавшие" в смысле отфильтрованные и теперь их не должно быть видно
Litkevich Yuriy
Цитата(r485_post @ 14.11.2010, 4:00) *
ссылка явно битая
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.