игры с QPalette

Сразу надо сказать, что QPalette есть у вашего приложения QApplication, и это определяет палитру (набор) нескольких визуальных состояний всех виджетов в вашем придожении по умолчанию.

Берется этот дефолтный QPalette из настроек операционной системы.

Рассмотрим интересную ошибку. Что может не понравиться в делегате QComboBox с переопределенным методом отрисовки paint (к примеру в Qt 4.8.1) это то что фон виджета не прозрачен и выделяется на общем представлении таблицы например в режиме выделения строки.

При выделении строки в целом фон  поля делегата не выделяется:

фотка 1

На самом деле этот вопрос можно легко решить в методе paint, если посмотреть, что передается в параметре option.

Здесь вызывается paint для отрисовки ячейки.

if (option.state & QStyle::State_Selected)
{
   painter->setPen(QPen(option.palette.color(QPalette::HighlightedText))); // Цвет пера
   painter->fillRect(option.rect, option.palette.highlight());
}

Вы никогда не попадете в такую ситуацию, если будете не забывать использовать initStyleOptions перед отрисовкой.


QTableView новые возможности.