Фактический рендеринг зависит от платформы, но для Windows (возможно, других) вы устанавливаете роль цвета QPalette::Highlight
. Этот пример работает:
#include <QtGui>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QRubberBand band(QRubberBand::Rectangle);
QPalette pal;
pal.setBrush(QPalette::Highlight, QBrush(Qt::red));
band.setPalette(pal);
band.resize(30, 30);
band.show();
return app.exec();
}
Если вы находитесь на другой платформе, дайте мне знать, и я смогу увидеть, что работает для этой платформы.
Однако , поскольку вы ссылаетесь на графическое представление, мне интересно, имеете ли вы в виду черную пунктирную линию, которая появляется вокруг выделенных элементов? Это что-то совершенно другое, и вообще не включает QRubberBand
. Если это так, возможно, вам придется обновить вопрос.
Кстати, я посмотрел код QWindowsVistaStyle
, чтобы найти ответ. Если вы работаете на другой платформе и имеете доступ к источнику, вы можете найти правильный класс стилей для этой платформы.
ОБНОВЛЕНИЕ Похоже, вам не повезло с Ubuntu. Это использует QCleanLooksStyle
, который вызывает QWindowsStyle
для круглой резинки. Там цвета жестко закодированы:
QPixmap tiledPixmap(16, 16);
QPainter pixmapPainter(&tiledPixmap);
pixmapPainter.setPen(Qt::NoPen);
pixmapPainter.setBrush(Qt::Dense4Pattern);
pixmapPainter.setBackground(Qt::white);
pixmapPainter.setBackgroundMode(Qt::OpaqueMode);
pixmapPainter.drawRect(0, 0, tiledPixmap.width(), tiledPixmap.height());
... etc ...
Кроме того, Справочник таблиц стилей Qt не перечисляет QRubberBand
как подчиняющийся любым стилям. Если вам действительно нужен другой цвет, единственным вариантом может быть подкласс QRubberBand
и реализация paintEvent
. Облом.