I find exactly What I have to do;
state are : Normal, Rollover, Pushed/on, Disabled
state not implemeneted are pushed mode.
In order to get an icone for different state, independant from the style
I do that:
icon.
addFile(":/Normal.png",
QSize(),
QIcon::Normal,
QIcon::Off);
// Normal icon.
addFile(":/Rollover.png",
QSize(),
QIcon::Active,
QIcon::Off);
//rollover icon.
addFile(":/Pushed.png",
QSize(),
QIcon::Active,
QIcon::On);
//pushed/On //disabled is already implemented
_myAction->setIcon(icon);
myToolButton->setDefaultAction(_undoAct);
QIcon icon;
icon.addFile(":/Normal.png", QSize(), QIcon::Normal, QIcon::Off); // Normal
icon.addFile(":/Rollover.png", QSize(), QIcon::Active, QIcon::Off); //rollover
icon.addFile(":/Pushed.png", QSize(), QIcon::Active, QIcon::On); //pushed/On
//disabled is already implemented
_myAction->setIcon(icon);
myToolButton->setDefaultAction(_undoAct);
To copy to clipboard, switch view to plain text mode
In a subclass of QtoolButton, I override the paintEvent like that:
{
// case for pushed mode
if (isEnabled() && isDown())
{
initStyleOption(&opt);
// modify style Option: "icon", to get a new icon inside
p.
drawComplexControl(QStyle::CC_ToolButton, opt
);
}
else
QToolButton::paintEvent(e
);
// all other mode are supported
}
void CAdvToolButton::paintEvent(QPaintEvent * e)
{
// case for pushed mode
if (isEnabled() && isDown())
{
QStylePainter p(this);
QStyleOptionToolButton opt;
initStyleOption(&opt);
// modify style Option: "icon", to get a new icon inside
opt.icon = QIcon(icon().pixmap(iconSize(), QIcon::Active, QIcon::On));
p.drawComplexControl(QStyle::CC_ToolButton, opt);
}
else
QToolButton::paintEvent(e); // all other mode are supported
}
To copy to clipboard, switch view to plain text mode
that'all 
David
Bookmarks