Premise: Ich auf osx bin mit qt5.7 Ich habe das Dezimaltrennzeichen in der System Preferences
geändert - Language and Region
-Advanced
das Komma zu verwenden:QLocale und QSettings
Ich habe ein Problem in Speichern/Wiederherstellen des Werts QLocale
über QSettings
.
Dies ist 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;
}
und das ist mein .pro
:
TEMPLATE = app
QT += core
TARGET = test
INCLUDEPATH += .
SOURCES += main.cpp
Die Ausgabe lautet:
"Englisch" "Latin" "Unitedstates"‘, '- "System OK"
"Englisch" "Latein" "UnitedStates" '. " - "QSettings NICHT OK"
"Englisch" "Latein" "UnitedStates" '. " - „Ungarische NOCH NICHT OK“
und es wie die QLocale
aussieht, ist bewusst, dass ich das Komma als Dezimalzeichen verwenden, aber wenn diese QLocale
in QSettings
gespeichert und zurückgelesen, ist Qt nicht wiederhergestellt werden.
Auch bei dem hier beschriebenen Hack: https://stackoverflow.com/a/11603299/2743307 funktioniert es nicht.