It seems that you are trying to render the button by yourself too (your paint() method). I don't think it is compatible with stylesheets.
I remember reading somewhere in the Qt documentation (I can't find it again) that you cannot combine StyleSheets with other styling method (via QProxyStyle for example).
This may be the problem.
If your paint() method is really needed, in this case, I would suggest you to not use stylesheets for rendering the button but using the mouse events instead and use the QToolButton::setIcon() method on mouse pressed and mouse released events.
Bookmarks