2012-03-22 4 views
6

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

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

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

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

ответ

7

Это, как я вынес отмечаемые элементы внутри QTreeView с двумя изображениями (глаз открыт/глаз закрыт, чтобы представить их видимость состояние) вместо того, чтобы флажок:

ui.myTreeView->setStyleSheet(
    "QTreeView::indicator:unchecked {image: url(:/icons/eye_grey.png);}" 
    "QTreeView::indicator:checked {image: url(:/icons/eye.png);}" 
); 

Деталь должна быть установлена ​​как триггерная, из курс. Надеюсь это поможет.

+0

Вот и все! Большое спасибо! – Feoggou

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