Настройка флажков элементов QTreeView - PullRequest
6 голосов
/ 22 марта 2012

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

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

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

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

1 Ответ

7 голосов
/ 22 марта 2012

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

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

Элементы должны быть помечены как проверяемые, конечно. Надеюсь, это поможет.

...