Я разрабатываю приложение Qt на C++. Приложение сосредотачивается вокруг виджета дерева, который имеет поддерево для каждого объекта в системе. Объекты имеют «подсветку» цветов, которые могут быть указаны пользователем и выделять события, связанные с определенным объектом. Цвет фона элемента корневого дерева Entity - это цвет выделения для Entity. Когда происходит событие, связанное с Entity, я хотел бы сделать фоновый цвет идентификатора, сопоставленного с Entity, таким же, как цвет выделения Entity. Вот грубый макет того, что я пытаюсь сделать, с псевдо-HTML-теги с указанием цвета и где я хочу их:Как изменить цвет фона или текста для части QTreeWidgetItem
<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 нарисовать части текста, которые я хочу, с цветами фона, которые я хочу, без необходимости обрабатывать каждый потенциальный фрагмент потребностей чертежного элемента дерева?
таблицы стилей? http://stackoverflow.com/a/26128914/2266412 –
В основном вам нужно отображать HTML в представлениях Qt. Это можно сделать, создав делегат пользовательского элемента. См. [Этот вопрос] (http://stackoverflow.com/questions/1956542/how-to-make-item-view-render-rich-html-text-in-qt). –
@PavelStrakhov, спасибо! Я не хорошо разбираюсь в HTML, но, наконец, нашел тег и сделал этот трюк для меня вместе со связанным вопросом. Если вы представите его в качестве ответа, я соглашусь с ним. – iamtheddrman