#include #include #include class ChildWidget : public QWidget { public: ChildWidget( QWidget* parent=0 ) : QWidget( parent ) {} ~ChildWidget() {} protected: void paintEvent( QPaintEvent* event ) { QPainter painter( this ); for( const QRect& rect : event->region().rects() ) { qDebug() << rect; painter.fillRect( rect, Qt::red ); } } }; int main( int argc, char* argv[] ) { QApplication app( argc, argv ); QWidget mainWidget; ChildWidget* cw = new ChildWidget( &mainWidget ); cw->setAttribute( Qt::WA_StaticContents ); cw->setAttribute( Qt::WA_OpaquePaintEvent ); cw->resize( 200, 200 ); QPushButton button; button.setText( "Click Me" ); QObject::connect( &button, &QPushButton::clicked, [ &mainWidget ]() { mainWidget.resize( 250, 250 ); } ); mainWidget.resize( 150, 150 ); button.resize( 150, 40 ); mainWidget.show(); button.show(); button.raise(); return app.exec(); }