Собственно такое тоже будет работать:
connect(lineEdit,SIGNAL(textEdited(QString)),this,SLOT(FormatText()));
void Dialog::FormatText()
{
QString str=lineEdit->text().replace(QChar(160),""); //delete spacess
QString str_2=QString("%L1").arg(str.toLongLong(),-1,'f',0,' '); //format
lineEdit->setText(str_2);
}
Сигнал textEdited(QString) испускает только при редактировании пользователем и не реагирует на метод .setText(const QString &)
Пришлось "захардкодить" пробел, потому как форматирование по "L" вставляло пробел в другой кодировке и метод
QString::replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
не срабатывал...
Дальше осталось только корректно обрабатывать удаление пробелов, поведение курсора и переместить все это в наследника от QLineEdit