2015-08-03 6 views
1

Есть ли способ изменить значок элемента в QListView после его отображения?Qt: Изменить значок в QListView

Я не могу найти способ сделать setData с помощью DecorationRole (роль, используемая для значка).

Используемая модель является обычным QFileSystemModel, но реализация по умолчанию применима только для EditRole, поэтому для изменения названия элемента.

Я не знаю, как можно переопределить setData.

Цель состоит в том, чтобы изменить значок при наведении курсора мыши на элемент (через mouseMoveEvent)

+0

Подкласс 'QFileSystemModel' и pad' DecorationRole' для 'setData'? Но тогда вам нужно знать, где установить значок, чтобы представление могло получить к нему доступ через model's'data() '. – user3528438

ответ

1

Вам нужно будет создать подкласс QListView и реализовать поведение, которое изменяет роль отображается значок при наведении указателя мыши над пункт.

Такой подкласс может использовать внутреннюю прокси-модель, так что ей не нужно будет возиться с живописью базового вида. Просто сообщите прокси, что данные роли отделки данного объекта изменились, и базовый вид будет знать, что делать.

+0

Я не понимаю, что означает «изменение роли отображаемого значка». – user3842408

+0

@ user3842408 Исходная модель предоставляет два значка, по умолчанию под Декоратором, и наклонный под настраиваемой ролью. Прокси перенаправляет запросы для данных DecorationRole на одну и ту же роль или на пользовательскую роль зависания в зависимости от направлений из подкласса. –

Смежные вопросы