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()