sleep の問題の解決になっていないのですが、threadの終了を待つには

thread->terminate();
while(!thread->isFinished(){
QCoreApplication::processEvents();
}

で十分でした。
マシンによると思うのですが、うちのやつだと100回以内にループを
抜けていたので sleep するレベルではありませんでした。