Добрый день.
На форме (Qt 4.4.3) есть QGroupBox ui.gb, который надо выделить при щелчке мышью.
Такой код не работает!
C++ (Qt)
QPalette p = ui.gb->palette();
p.setBrush(ui.gb->backgroundRole(), QBrush(Qt::red));
ui.gb->setPalette(p);
Единственный способ, который сработал - создать наследника QGroupBox , и в paintEvent рисовать прямоугольник. Но во первых он выходит за рамку, во вторых получается задать только жестко заданный цвет. Переменная-член класса с цветом не учитывается. В отладчике увидел, что в paintEvent почему-то другой this по сравнению с setColor.
C++ (Qt)
void MyGroupBox::paintEvent(QPaintEvent* e)
{
QPainter p;
p.begin(this);
p.setBrush(color);//не работает
p.setPen(color);//не работает
p.setBrush(Qt::red);//так работает
p.setPen(Qt::red);//так работает
int w=width(),h=height();
p.drawRect(0,0,w,h);
p.end();
QGroupBox::paintEvent(e);
}
void MyGroupBox::setColor(QColor c)
{
color=c;
repaint();
}
Отсюда вопрос: как правильно изменить цвет QGroupBox?
Можно ли это сделать, не создавая наследника?
А если наследник нужен, то как сделать цвет изменяемым?