我正在使用文件支持的QSettings
对象写入和读取字符串和 int 值。当我后来尝试从不同的进程中读取值时,这些值被读取为字符串而不是 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 上都存在。