нужно вместо конца строки (перевод строки+возврат каретки) делать только возврат каретки - "\r".
пример:
QTextStream out(stdout);
out << trUtf8("Копирование:\n");
double current = 0;
foreach(QString sFileName, all){
++current;
out << "Complete: "
<< ( (current * 100)/cnt) << qSetRealNumberPrecision(3)
<< "% \r" << flush;
// Делаем полезную работу
}
out << reset << endl << flush;
здесь
qSetRealNumberPrecision(3) задаёт формат вывода в консоль (стандартный поток вывода), а
reset - сбрасывает в исходное состояние настройки потока.
Т.к. qDebug() всегда делает "конец строки", то прийдётся глобально для всего приложения переопределять работу обработчиков qDebug(), qFatal(),...
(см.
тут)