QtBase: Fix painting example arthur background color
The arthur style set the background color to a bright color and leave the foregroud color, for example for text, untouched. If you are using a color theme with bright foregroundcolors on your system this will result in unreadable text on push- and radio-buttons. The function drawControl is now reimplemented and the labels with text are drawn with an appropriate color. Change-Id: Ifd7f3a2b1c0305130255009c7733e0966830171a Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
This commit is contained in:
parent
f52177829a
commit
c3b4f27603
@ -311,6 +311,44 @@ void ArthurStyle::drawComplexControl(ComplexControl control, const QStyleOptionC
|
||||
return;
|
||||
}
|
||||
|
||||
void ArthurStyle::drawControl(QStyle::ControlElement element, const QStyleOption *option,
|
||||
QPainter *painter, const QWidget *widget) const
|
||||
{
|
||||
switch (element) {
|
||||
case CE_RadioButtonLabel:
|
||||
if (const QStyleOptionButton *button
|
||||
= qstyleoption_cast<const QStyleOptionButton *>(option)) {
|
||||
|
||||
if (button->text.isEmpty()) {
|
||||
QCommonStyle::drawControl(element, option, painter, widget);
|
||||
} else {
|
||||
painter->save();
|
||||
painter->setPen(Qt::black);
|
||||
painter->drawText(button->rect, Qt::AlignVCenter, button->text);
|
||||
painter->restore();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case CE_PushButtonLabel:
|
||||
if (const QStyleOptionButton *button
|
||||
= qstyleoption_cast<const QStyleOptionButton *>(option)) {
|
||||
|
||||
if (button->text.isEmpty()) {
|
||||
QCommonStyle::drawControl(element, option, painter, widget);
|
||||
} else {
|
||||
painter->save();
|
||||
painter->setPen(Qt::black);
|
||||
painter->drawText(button->rect, Qt::AlignVCenter | Qt::AlignHCenter, button->text);
|
||||
painter->restore();
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
QCommonStyle::drawControl(element, option, painter, widget);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QRect ArthurStyle::subControlRect(ComplexControl control, const QStyleOptionComplex *option,
|
||||
SubControl subControl, const QWidget *widget) const
|
||||
{
|
||||
|
@ -55,8 +55,8 @@ public:
|
||||
|
||||
void drawPrimitive(PrimitiveElement element, const QStyleOption *option,
|
||||
QPainter *painter, const QWidget *widget = 0) const;
|
||||
// void drawControl(ControlElement element, const QStyleOption *option,
|
||||
// QPainter *painter, const QWidget *widget) const;
|
||||
void drawControl(ControlElement element, const QStyleOption *option,
|
||||
QPainter *painter, const QWidget *widget) const;
|
||||
void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option,
|
||||
QPainter *painter, const QWidget *widget) const;
|
||||
QSize sizeFromContents(ContentsType type, const QStyleOption *option,
|
||||
@ -66,9 +66,6 @@ public:
|
||||
QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt,
|
||||
SubControl sc, const QWidget *widget) const;
|
||||
|
||||
// SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option,
|
||||
// const QPoint &pos, const QWidget *widget = 0) const;
|
||||
|
||||
int pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const;
|
||||
|
||||
void polish(QPalette &palette);
|
||||
|
Loading…
Reference in New Issue
Block a user