Так не завершайте его сразу! Закрывайте через некоторое время, то есть можно отсылать в диалог из потока значения <= maximum() - 1, а когда поток завершится можно сделать задержку. Что-нибудь типа:
QTimer::singleShot( msc, dlg, SLOT( close() ) );
Если я конечно правильно понял о чем речь