Понятненько. Разобрался.
Для Windows style, в исходниках цвет преобразуется следущим образом
C++ (Qt)
QColor patternCol((bg_col.red() ^ 0xff) & 0xff, (bg_col.green() ^ 0xff) & 0xff, (bg_col.blue() ^ 0xff) & 0xff);
Поэтому чтобы отображался требуемый цвет, нужно его таким же образом преобразовать обратно
QColor color = Qt::red;
C++ (Qt)
QColor newcolor((color.red() ^ 0xff) & 0xff, (color.green() ^ 0xff) & 0xff, (color.blue() ^ 0xff) & 0xff);
Отрисовку "курсора" сделал так
C++ (Qt)
if ((option.state & QStyle::State_HasFocus)) {
QStyleOptionFocusRect o;
o.rect = option.rect.adjusted(1,1,-1,-1);
o.QStyleOption::operator=(option);
o.state |= QStyle::State_KeyboardFocusChange;
o.state |= QStyle::State_Item;
o.backgroundColor = newcolor;
QApplication::style()->drawPrimitive(QStyle::PE_FrameFocusRect, &o, painter);
}
Другие стили не смотрел
P.S. Что то при редактировании кода вместо пробелов кракозябры кокоето рисуются