If you are drawing within the parent widget, I don't know of any way to override the way the children paint by allowing the parent to write over them; although it could well be possible.

What you could do, is create a customised QWidget class with an overriden paint method to draw the image and add that into your parent, making it a sibling of the item you want to draw over. This would allow you to raise() the new custom widget to be drawn over the push button (provided you resize it appropriately).