My suggestion would be to do the validation in the dialog's accept() slot.
This way you don't have to run the dialog again, it will just stay open.

Cheers,
_