You can't set one stylesheet directly on the button, and one on the parent widget. The button one will be prefered. Try this:
navButton->setStyleSheet("QPushButton { background-color:red; } QPushButton:focus { background-color:blue; }");
A little late for a reply, but in case anyone else pops on this via google;
You can add the icon by changing the QAbstractButton-property. Simply use:
QAbstractButton {
qproperty-icon: theme_url("/button_action/add");
}
The type-selector (QAbstractButton), enables you to set the style for the selected object and all its subclasses. Since QProcessButton extends the QAbstractButton, this will do the trick. (Of course you could also use the QPushButton
type-selector here).
For more information on how to use selectors, I found this quite helpful.
If you want to learn more about the button-properties, refer to the QT-Documentation here.
PS. In case you want to change the icon, once the button is clicked, use
qproperty-icon: url(":/Icons/before_click.png") off,
url(":/Icons/after_click.png") on ;
Best Answer
Unfortunately, it is a bug of Qt which is still not fixed. There's a workaround suggestion within the comments to that bug, basically you could use empty
qproperty-icon
and reserve the space necessary for it while actually changingbackground-image
property instead:But the end result looks... not very satisfactory really. You can get much better results if you use C++ to change the button's icon at runtime, here's a simple example using event filter:
Then somewhere in your code setting up the UI you do something like this:
And bingo - you get the button's icon changing on hover and unhover!