Qt QLocale setDefault仅在调用
我试图更改代码中Qt QLocale setDefault仅在调用,qt,qlocale,Qt,Qlocale,我试图更改代码中QLocale变量的默认语言,然后使用每种语言的不同分隔符。我不想改变整个系统,我只想有机会用不同的分组和小数分隔符打印数字。 用户可以将小数分隔符更改为自己喜欢的分隔符 //this part works as expected in debugger QLocale locale; if(decSep==".") { locale.setDefault(QLocale::English); } else if(decSep==",") { locale.s
QLocale
变量的默认语言,然后使用每种语言的不同分隔符。我不想改变整个系统,我只想有机会用不同的分组和小数分隔符打印数字。
用户可以将小数分隔符更改为自己喜欢的分隔符
//this part works as expected in debugger
QLocale locale;
if(decSep==".")
{
locale.setDefault(QLocale::English);
}
else if(decSep==",")
{
locale.setDefault(QLocale::German);
}
else
{
locale.setDefault(QLocale::system().language());
}
//added for debug purposes
/*if(local.language()==QLocale::English)
{
int x=0;//jumped here when it was supposed to do so (decSep==".")
}*/
现在有一些代码,我确信与这个错误无关。
后来我使用:
//Now this doesn't work
QString tempNum1 = locale.toString(myNum, 'f');
使用locale.toString
我可以将分隔符默认设置为给定的语言
现在我的问题是,locale变量似乎需要一些时间或smth来更改为其他设置。当我更改decSep
var并因此更改语言时(我调试了该部分,该部分已更改,并且当我请求提供正确枚举的语言时),它使用先前设置的设置。然后,当我再次调用该函数时,它给出了tempNum1
字符串,然后它就开始工作了
这是一个已知的问题还是我做错了什么?我可以更新语言环境或类似的东西吗?您正在设置默认的语言环境,而不是当前
QLocale
对象的语言
请注意,setDefault
是一个静态函数,因此它不会更改对象属性本身,即
locale.setDefault(QLocale::English)
与
QLocale::setDefault(QLocale::English)
示例
以下示例可能会澄清这种行为:
QLocale locale;
QLocale localeGerman(QLocale::German);
qDebug() << locale.toString(1.234, 'f'); // returns 1.234
qDebug() << localeGerman.toString(1.234, 'f'); // returns 1,234
QLocale::setDefault(QLocale::German); // same as locale.setDefault(QLocale::German);
qDebug() << locale.toString(1.234, 'f'); // returns still 1.234
QLocale locale2;
qDebug() << locale2.toString(1.234, 'f'); // returns 1,234
locale = localeGerman;
qDebug() << locale.toString(1.234, 'f'); // returns 1,234
QLocale语言环境;
QLocale localeGerman(QLocale::德语);
qDebug()