the problem is that you call QThread::wait()
That will block the caller thread, in your case your GUI thread. While it is blocked it can't do anything, so it cannot process the signal event it is getting.

Potential solution (depending in your problem)
do not call wait, connect thread's finished() signal to dialog's accept() slot before calling thread's start method.

Cheers,
_