1

非常に基本的な質問があります。Qtでコンマ(フランス語版のOSを使用)の代わりに浮動小数点数でポイントを使用するようにするにはどうすればよいですか?

その他の質問:数千の区切り文字用のスペースを使用して数値を表示することは可能ですか?

4

2 に答える 2

4

これを試して:

QLocale loc = QLocale::system(); // current locale
loc.setNumberOptions(QLocale::c().numberOptions()); // borrow number options from the "C" locale
QLocale::setDefault(loc); // set as default

「C」ロケールのようにすべてのオプションが必要な場合は、次のようにするだけです。

QLocale::setDefault(QLocale::c());

2番目の質問について:Qtはカスタムロケールをサポートしていませんが、番号オプションをハンガリーのロケールに設定してみることができます(1234と12 345.67が生成されるはずです-私は自分で試していません)

QLocale loc = QLocale::system(); // current locale
QLocale hungary(QLocale::Hungarian);
loc.setNumberOptions(hungary.numberOptions()); // borrow number options from the Hungarian locale
QLocale::setDefault(loc); // set as default
于 2012-07-22T19:22:42.023 に答える
0

Linuxの場合:

私はドイツに住んでいますが、システムで英語のメッセージを使用したいので、PCにロケールが混在しています。

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=

これにより、数値の表現に問題が発生しました。

私はQLocaleを初めて使用し、時間の予算があったため、簡単なハックを使用して問題を一時的に「修正」しました。これは非常にうまく機能しました。

int main(int argc, char *argv[]) {
  // make numbers predictable
  // a preliminary hack. Will be fixed with native language support
  setenv("LC_NUMERIC", "C",1); 
  QApplication a(argc, argv);
...

これには、画面上の表示と永続ストレージとの間の読み取りと書き込みの両方で数値が統一されるという利点がありました。後者は最大の問題でした。たとえば、フロートは「123.45」ではなく「123,45」のように記述されていました。

ネイティブソリューションではありませんが、当面先に進むための実行可能なトリックです。

完全を期すために:アプリケーションは私だけのものでした。したがって、このトリックはもちろん専門性を主張するものではありません。

于 2022-01-10T14:09:49.580 に答える