QLocale — Проверить цену

У меня проблемы с проверкой цены.

Пример принятой цены: 10,00 / 100,00 / 1.000,00

Не принято: 10/100 / 1000.00

Код, но это прохождение 100/10 / 1000.00

 bool ok;
QLocale::setDefault(QLocale(QLocale::Portuguese, QLocale::Brazil));
QLocale brazil; // Constructs a default QLocale
QString text;
if(ui->price->text().length() <= 2){
qDebug() << text.sprintf("%6.2f", ui->price->text().toDouble()); //format 50 = 50.00
}
brazil.toDouble(ui->price->text(), &ok);
qDebug() <<  ok;

1

Решение

Валидация завершается неудачно, как и следовало ожидать, как с Qt 4.8, так и с последней версией Qt 5. Убедитесь, что вы действительно можете правильно установить QLocale на своей платформе. brazil.decimalPoint () должен возвращать ‘,’

ПРИМЕЧАНИЕ. Вы не можете использовать QString :: sprintf, если хотите форматирование с учетом локали. Явно используйте QTextStream и setLocale (), так как он будет по умолчанию использовать локаль C.

#include <QLocale>
#include <QDebug>
#include <QStringList>

int main()
{
bool ok;
QLocale::setDefault(QLocale(QLocale::Portuguese, QLocale::Brazil));
QLocale brazil; // Constructs a default QLocale
QStringList textlist = QStringList() << "400.00" << "400" << "400,00";
for (QString text : textlist) {
brazil.toDouble(text, &ok);
qDebug() << text << "is" << ok;
}

return 0;

}

урожайность,

"400.00" is false
"400" is true
"400,00" is true
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]