Я использую пользовательскую модель таблицы, полученную из QAbstractTableModel
,
Я переписал headerData()
и я могу изменить цвет шрифта для отдельных заголовков строк (или заголовков столбцов, но я все о строках здесь), возвращая цвет на Qt::ForegroundRole
if(role == Qt::ForegroundRole)
return Qt::green;
Но если я пойду на Qt::BackgroundRole
чтобы установить цвет фона ячеек заголовка, ничего не происходит.
if(role == Qt::BackgroundRole)
return Qt::red;
Я установил точку останова на return
и это достигнуто. Но ничего не происходит 🙁
Есть идеи, где я не прав?
AFAIK роли роли эквивалентны настройке цвета палитры, QStyle
рисование ячеек заголовка можно игнорировать.
У меня были проблемы с использованием QPalette
или таблицы стилей для установки произвольных цветов на виджеты. Текст имеет тенденцию работать, так же как и «оконные» цветные фоны ( QPushButton
фон, например), но фон поля ввода текста не (QLineEdit
например). Но AFAIK это зависит от конкретного QStyle
реализация, поэтому будет варьироваться не только между виджетами, но и между платформами. Единственный определенный способ получить вещи именно так, как вы хотите, это переопределить QStyle
(а большой работа), или покрасьте его вручную в paintEvent(..)
(трудно следить за текущим QStyle
и еще много кода).
Других решений пока нет …