gpt4 book ai didi

c++ - QLocale 和 QSettings

转载 作者:太空宇宙 更新时间:2023-11-04 13:10:36 25 4
gpt4 key购买 nike

前提:我在 osx 上使用 qt5.7 我已经在 系统偏好设置 - 语言和区域 - 高级中更改了小数点分隔符code> 使用逗号:

enter image description here

我在通过 QSettings 存储/恢复 QLocale 值时遇到问题。

这是main.cpp:

#include <QSettings>
#include <QDebug>

void printLocale(QString header, QLocale locale) {
qDebug() <<
QLocale::languageToString(locale.language()) <<
QLocale::scriptToString(locale.script()) <<
QLocale::countryToString(locale.country()) <<
locale.decimalPoint() << "-" << header;
}


int main( int argc, char **argv )
{

QLocale my_loc=QLocale::system();
printLocale("System OK", my_loc);
QSettings my_set("test","");
my_set.setValue("locale",my_loc);
QLocale my_set_loc=my_set.value("locale").toLocale();
printLocale("QSettings NOT OK",my_set_loc);

// hack from https://stackoverflow.com/a/11603299/2743307
QLocale hungary(QLocale::Hungarian);
my_set_loc.setNumberOptions(hungary.numberOptions());

printLocale("Hungarian STILL NOT OK",my_set_loc);

return 0;
}

这是我的.pro:

TEMPLATE = app
QT += core
TARGET = test
INCLUDEPATH += .
SOURCES += main.cpp

输出是:

"English" "Latin" "UnitedStates" ',' - "System OK"

"English" "Latin" "UnitedStates" '.' - "QSettings NOT OK"

"English" "Latin" "UnitedStates" '.' - "Hungarian STILL NOT OK"

看起来 QLocale 知道我使用逗号作为小数点分隔符,但是当此 QLocale 存储在 QSettings 中并读回时, Qt 不会恢复它。

同样在尝试此处描述的黑客攻击时:https://stackoverflow.com/a/11603299/2743307它不起作用。

最佳答案

这似乎是一个错误。我刚刚使用 5.6 和 macOS Sierra (10.12.3) 测试了您的代码,它可以正常工作,即使没有破解。

在 Qt 5.8 上测试时它停止工作,但如果您更改 QSettings 的初始化以将设置保存到文件,它就可以工作!

// QSettings my_set("test","");
QSettings my_set("test.ini", QSettings::IniFormat);

关于c++ - QLocale 和 QSettings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40155440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com