ファイルに基づくオブジェクトを使用して、string 値と int 値を読み書きしていQSettings
ます。後で別のプロセスから値を読み取ろうとすると、値は int ではなく文字列として読み取られます。
これは、値を書き込むために使用しているコードです。
QSettings settings("TestQSettings.ini", QSettings::IniFormat);
settings.setValue("AAA",QString("111"));
settings.setValue("BBB",222);
作成されるファイルは次のとおりです。
[General]
AAA=111
BBB=222
これは、値を読み取るために使用しているコードです。
QVariant qvar = settings.value("AAA");
std::cout << "AAA type " << qvar.type() << std::endl;
qvar = settings.value("BBB");
std::cout << "BBB type " << qvar.type() << std::endl;
同じプロセスからこのコードを実行すると:
AAA type 10
BBB type 2
このコードを別のプロセスから実行すると:
AAA type 10
BBB type 10
読み取った後に型を変換できることはわかっています。残念ながら、この解決策では Windows の従来のクロスプラットフォーム コードを変更する必要がありますが、これは変更したくありません。たとえば、RegQueryValueEx()
.
文字列と整数の型情報を保存して読み取ることはできますか?
たとえば、文字列には引用符が""
あり、整数にはありません。
[General]
AAA="111"
BBB=222
この問題は、Linux 上の Qt 4 と Qt 5 の両方に存在します。