1

我正在尝试使用 QSettings(ini 文件,Linux)存储一些不同类型的参数。
当我从中读取值时,settings.value()我只得到 QStrings。
有什么方法可以在此设置文件中存储 QVariant 的类型,还是应该使用其他存储?

提前致谢!

4

2 回答 2

4

根据文档,该QSettings::value()函数返回一个QVariant. 然后应该将其转换为您想要的任何类型。

您可以使用QVariant::type()查找您存储在 QSettings 中的类型。

这就是 QSettings 应该如何工作,并且确实在 Windows 上使用 NativeFormat。

但是,当使用 ini 文件和对于大多数简单类型(包括字符串和整数)时,QSettings 在 ini 文件中使用相同的简单表示,因此会合并这些类型。它们都以 QVariant 中的 QString 类型返回。

更复杂的类型在 ini 文件中正确编码,因此这些类型被保留。

于 2015-09-18T14:23:58.810 回答
1

QSettings 中所述,不区分 string 和 int 值

QSettings 从 .ini 文件中读取的 QVariant 的每个值都具有字符串类型。

还提出了手动将类型信息附加到存储的字符串的解决方案。因此,如果在阅读过程中没有找到特殊的后缀,则可以手动决定是否转换为 int 或 bool。

顺便说一句,对于更复杂的类型(如QSize),类型信息被存储,所以QVariat类型是正确的。

于 2015-09-18T15:43:54.930 回答