Okay, just wanted to let you know I am using a very dirty workaround for now as time is slowly running out.

As I thought it is possible to call hide() and show() on the widget to get it repainted (repaint() didn't work for me neither...). Since I can't call it from drawContents I decided to write a small event handler for the resized() signal emitted by QCanvas. Unfortunately this is only half the way: It works great but only when enlarging the widget.

I couldn't find any better way to repaint it on being shrinked but by creating a QTimer that calls an event handler to check for decrease in the main widgets size and then calls hide() and show() on all widgets that need it.

As I said that's veeeery dirty but at least it works.