crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Иконки и текст в связке QListView + QFileSystemModel, ... а также фильтрация файлов
r485_post
  опции профиля:
сообщение 13.11.2010, 23:12
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 31.7.2009
Пользователь №: 970

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте.

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

Проблема в том, что 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
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


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

Цитата(r485_post @ 14.11.2010, 2:12) *
Вопрос - как это сделать без велосипедов ? Мне теперь что, строить свою QStandardItemModel ?
через свою ProxyModel, для определённого типа файлов для DecorationRole возвращать подходящую картинку
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
r485_post
  опции профиля:
сообщение 14.11.2010, 0:00
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 31.7.2009
Пользователь №: 970

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(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
  опции профиля:
сообщение 14.11.2010, 0:55
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(r485_post @ 14.11.2010, 4:00) *
ссылка явно битая
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.9.2019, 5:57