C++ QLocale-验证价格
我无法确认价格 中标价格示例:10,00/100,00/1.000,00 不接受:10/100/1000.00C++ QLocale-验证价格,c++,qt,qtgui,qlocale,C++,Qt,Qtgui,Qlocale,我无法确认价格 中标价格示例:10,00/100,00/1.000,00 不接受:10/100/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){ q
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;
代码,但这将通过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;
bool正常;
QLocale::setDefault(QLocale(QLocale::葡萄牙语,QLocale::巴西));
QLocale巴西;//构造默认QLocale
QString文本;
如果(ui->price->text().length()text().toDouble())//格式50=50.00
}
toDouble(ui->price->text(),&ok);
qDebug()验证失败,正如您所料,Qt4.8和最新的Qt5都会失败。检查是否可以在平台上正确设置QLocale。巴西。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;
}