Oh, that's because in your exec() implementation you call show() . I missed that.
You must call QDialog::exec().

Regards