crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Иконки и текст в связке QListView + QFileSystemModel
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 14.11.2010, 0:55
 
Цитата(r485_post @ 14.11.2010, 4:00) *
ссылка явно битая
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 условие видимости ).


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

"не попавшие" в смысле отфильтрованные и теперь их не должно быть видно
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 Дата 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 условие видимости ).

Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 17:22