Настройка флажков элементов QTreeView

У меня следующая ситуация: мне нужно создать собственный элемент управления "дерево", флажки которого также настроены. Я легко сделал большинство настроек для управления деревом, используя таблицы стилей; Мне удалось добавить флажки к элементам QTreeView, но у меня большие проблемы с их настройкой - мне нужно отобразить пользовательское изображение для отмеченного состояния и другое для непроверенного состояния.

Я пришел к выводу, что это можно сделать в моем подклассе QStyledItemDelegate, в событии рисования (т. е. CheckBoxItemDelegate::paint). Мне нужно отобразить текст, значок и флажок для элемента. Но есть проблемы:
- я не могу получить стиль элемента (который я задал с помощью таблицы стилей) - иначе мой текст может быть отрисован неправильным цветом;
- я не знаю прямоугольники каждого подэлемента (флажок, иконка, текст);
- Я не знаю, как получить иконку элемента (учитывая его QModelIndex), чтобы отрисовать его.

П.С. Я создал подкласс QTreeView (очевидно), и, поскольку я работаю с QFileSystemModel, я также создал подкласс, чтобы добавить к нему функциональность флажка.

Кто-нибудь может мне помочь? Является ли QStyledItemDelegate::paint правильным местом для изменения визуальных эффектов флажка элементов дерева? Если да, не могли бы вы привести небольшой пример или что-то в этом роде, как я могу это сделать?

6
задан om-nom-nom 23 March 2012 в 09:55
поделиться