Я занимаюсь разработкой приложения Qt на C ++. Приложение сосредотачивается вокруг виджета дерева, который имеет поддерево для каждого объекта в системе. Объекты имеют цвета «выделения», которые могут быть заданы пользователем, и выделяют события, связанные с конкретным объектом. Цвет фона элемента корневого дерева сущности является основным цветом для сущности. Когда происходит событие, связанное с сущностью, я бы хотел, чтобы цвет фона идентификатора, совпадающего на сущности, совпадал с цветом выделения сущности. Вот примерный макет того, что я пытаюсь сделать, с псевдо-HTML-тегами, показывающими цвета и где я хочу их:
<bgcolor=blue>Entity A</bgcolor>
Events
Identifier1 and <bgcolor=blue>Identifier2</bgcolor>
<bgcolor=blue>Identifier2</bgcolor> @ 10:45:22
<bgcolor=blue>Identifier3</bgcolor> and Identifier4
Насколько я понимаю, это невозможно напрямую с QTreeWidgetItem. Я знаю, что могу предоставить делегат для элемента дерева для обработки пользовательского рисования, но я не очень разбираюсь в части QStyle Qt. Наши клиенты будут использовать это приложение на XP и Win7, и могут иметь или не иметь включенный стиль WindowsClassic. Таким образом, обработка всех возможностей QStyle может стать очень сложной. Есть ли ярлык, с помощью которого я могу заставить QStyle рисовать части текста, которые я хочу, желаемыми цветами фона, без необходимости обрабатывать каждую потенциальную часть потребностей элемента дерева?
В основном вам нужно отображать HTML в представлениях Qt. Вы можете сделать это, создав пользовательский элемент делегата. Увидеть этот вопрос.
Установка цвета с помощью HTML:
text1 <span style="color: #ff0000">red text</span> text2