As yeye_olive wrote, you don't need any special widget updating, just return from the slot.

I would still not artificially freeze the application.

The option that is closest to your current code is to use a QEventLoop instance and connect the process' finished() signal to the lop's quit() slot.
Then you run exec() with the flag to exclude user input.

Additionally, as a visual clue for the user, I would disable the UI before running the nested loop and re-enable it after exec() returns.

Another option is to use a modal dialog.

Cheers,
_