В общем, самый простой способ, это использовать скрипт, т.к. запуск cmd с последующим вызовом rmdir через QProcess не прокатывает.
Скрипта мне хватило примерно такого:
cd ..
timeout /t 1 /nobreak
rmdir "путь" /s /q"
cd .. нужен, чтобы выбраться из текущей директории, т.к. иначе она сама не удалится.
timeout вместо sleep, т.к. sleep у меня не работал и в итоге оказалось, что он устаревший.
Запускать скрипт надо через QDesktopServices::openUrl.
Файл скрипта я создавал в temp и для поддержки русских путей ставил setCodec("CP-866") на QTextStream перед записью данных.