Qt :: BackgroundRole, похоже, игнорируется

Я использую пользовательскую модель таблицы, полученную из QAbstractTableModel,

Я переписал headerData() и я могу изменить цвет шрифта для отдельных заголовков строк (или заголовков столбцов, но я все о строках здесь), возвращая цвет на Qt::ForegroundRole

if(role == Qt::ForegroundRole)
return Qt::green;

Но если я пойду на Qt::BackgroundRole чтобы установить цвет фона ячеек заголовка, ничего не происходит.

if(role == Qt::BackgroundRole)
return Qt::red;

Я установил точку останова на return и это достигнуто. Но ничего не происходит 🙁

Есть идеи, где я не прав?

2

Решение

AFAIK роли роли эквивалентны настройке цвета палитры, QStyle рисование ячеек заголовка можно игнорировать.

У меня были проблемы с использованием QPalette или таблицы стилей для установки произвольных цветов на виджеты. Текст имеет тенденцию работать, так же как и «оконные» цветные фоны ( QPushButton фон, например), но фон поля ввода текста не (QLineEdit например). Но AFAIK это зависит от конкретного QStyle реализация, поэтому будет варьироваться не только между виджетами, но и между платформами. Единственный определенный способ получить вещи именно так, как вы хотите, это переопределить QStyleбольшой работа), или покрасьте его вручную в paintEvent(..) (трудно следить за текущим QStyle и еще много кода).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]