Я пытался использовать пользовательский фон "на ячейку" в (пользовательском) QTableView
с использованием (пользовательском) QStyledItemDelegate
.Все работает хорошо, пока я на самом деле не пытаюсь получить свой собственный фон.Скажем для примера, я хочу, чтобы все мои ячейки имели красный фон.Вот метод paint
моего Delegate
.
QStyleOptionViewItem newOption = option;
auto normalText = newOption.palette.brush(QPalette::ColorGroup::Normal, QPalette::ColorRole::Text);
// Works as expected
newOption.palette.setBrush(QPalette::ColorGroup::Normal, QPalette::ColorRole::Highlight, Qt::gray); // QBrush(Qt::GlobalColor::blue, Qt::BrushStyle::NoBrush));
// Expected too: selected cells are gray
newOption.palette.setBrush(QPalette::ColorGroup::Normal, QPalette::ColorRole::HighlightedText, normalText);
// All of the following do NOT work. I've tried every possible combination without success.
newOption.palette.setBrush(QPalette::ColorGroup::Normal, QPalette::ColorRole::Window, Qt::red);
newOption.palette.setBrush(QPalette::ColorGroup::Inactive, QPalette::ColorRole::Base, Qt::red);
newOption.palette.setBrush(QPalette::ColorGroup::Inactive, QPalette::ColorRole::AlternateBase, Qt::red);
newOption.palette.setBrush(QPalette::ColorGroup::Active, QPalette::ColorRole::Base, Qt::red);
newOption.palette.setBrush(QPalette::ColorGroup::Active, QPalette::ColorRole::AlternateBase, Qt::red);
QStyledItemDelegate::paint(painter, newOption, index);
Как мне этого добиться?Я думал, что мой способ сделать это был довольно простым и интуитивным ... Что здесь не так?