Автор: 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 условие видимости ).
Автор: Litkevich Yuriy 13.11.2010, 23:50
Цитата(r485_post @ 14.11.2010, 2:12)
а это значит, что непопавшие элементы
что значит не попавшие?
Цитата(r485_post @ 14.11.2010, 2:12)
Вопрос - как это сделать без велосипедов ? Мне теперь что, строить свою QStandardItemModel ?
через свою ProxyModel, для определённого типа файлов для DecorationRole возвращать подходящую картинку
Автор: r485_post 14.11.2010, 0:00
Цитата(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 условие видимости ).
Решение первого вопроса уже придумал замечательный человек вот здесь http://www.prog.org.ru/topic_15452_0.HTML . Суть в том, чтобы нарисовать стилизованый делегат. А вот примеров стилизованного делегата я в документации Qt не видел (наверное плохо искал).
"не попавшие" в смысле отфильтрованные и теперь их не должно быть видно
Автор: Litkevich Yuriy 14.11.2010, 0:55
Цитата(r485_post @ 14.11.2010, 4:00)
здесь http://www.prog.org.ru/topic_15452_0.HTML .
ссылка явно битая