Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QLocale-验证价格_C++_Qt_Qtgui_Qlocale - Fatal编程技术网

C++ QLocale-验证价格

C++ 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

我无法确认价格

中标价格示例: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){
   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;

}