Why do you want to repaint the image during every paintEvent? If nothing changed, the image doesn't have to be repainted. Implement a render method for your content that takes a QPainter* as an argument and when you want to repaint the image call it on the image's painter. In the paintEvent call it again but on the widget's painter.
Bookmarks