전제 : 쉼표를 사용하는 Advanced
- - Language and Region
내가 qt5.7를 사용하여 OSX에있어 본인은 System Preferences
에서 소수 구분을 변경했습니다 QSettings
을 통해 QLocale
값을 저장/복원합니다.QLocale 및 QSettings
#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
입니다 :
이
은main.cpp
입니다
TEMPLATE = app
QT += core
TARGET = test
INCLUDEPATH += .
SOURCES += main.cpp
출력은 다음과 같습니다
"영어", "라틴어" "미국 에선" ' '-'OK 시스템 '
"영어" "라틴어" "UnitedStates" '.' - "QSettings OK"
"영어" "라틴어" "UnitedStates" '. - "헝가리어 STILL OK NOT"
가와는 QLocale
처럼 보이는 내가 소수 구분 기호로 쉼표를 사용하지만이 QLocale
이 QSettings
에 저장하고 다시 읽을 때, Qt는 그것을 복구하지 않는 것을 알고있다.
여기에 설명 된 해킹을 시도 할 때 : https://stackoverflow.com/a/11603299/2743307도 작동하지 않습니다.