Color issues on KMultiTabBarTab, KUrl(Navigator)Button and KCapacityBar

Thomas L├╝bking thomas.luebking at
Sat Aug 30 15:41:14 BST 2008

My Code copy is 2 days old, if any of this has meanwhile been fixed, sorry.

The core issue on the first to widgets is the strong assumption that 
QPalette::ButtonText contrasts with QPalette::Window.
For KUrl(Navigator)Button and KCapacityBar, also see the mail on "Styled 
custom widgets"

calls the style to paint the background (PE_PanelButtonTool) but hardcodes the 
style()->drawItemText(&painter, labelPaintArea, Qt::AlignLeading | 
Qt::AlignVCenter, palette(), true, t, QPalette::ButtonText);

use foregroundRole() - will be QPalette::WindowText for many styles - insted 
of QPalette::ButtonText or call the style to paint the text 


the widget draws no background unless hover (including autoFillBackground() 
not being set), but KUrlButton::foregroundColor() returns the widgets 
foregroundRole color (as it inherits QPushbutton, usually 
QPalette::ButtonText) what fails on Qt4's transparent widgets

vv. to above, hardcode QPalette::WindowText as unhovered role or ensure the bg 
is covered with QPalette::Button


1) the widget uses QPalette::HighlightedText to create the gloss, i.e. assumes 
QPalette::HighlightedText is either Qt::white or at least very bright - 
otherwise the result (e.g. QPalette::HighlightedText == Qt::black) looks 
err... interesting.
2) the gloss turns that bright in the upper region that the text will be 
unreadable as long as QPalett::WindowText isn't dark (i.e. Qt:black)
3) the text can also become unreadable if the assumption QPalette::Highlight 
contrasts QPalette::WindowText does NOT hold (e.g. dark blue and dark grey, 
black and black etc.)

use the style and/or:
1) use Qt::white to form the gloss
2) + 3) brighten the lower part and hardcode the fontcolor to Qt::white


More information about the kde-core-devel mailing list