我正在尝试使用 QSettings(ini 文件,Linux)存储一些不同类型的参数。
当我从中读取值时,settings.value()
我只得到 QStrings。
有什么方法可以在此设置文件中存储 QVariant 的类型,还是应该使用其他存储?
提前致谢!
根据文档,该QSettings::value()
函数返回一个QVariant
. 然后应该将其转换为您想要的任何类型。
您可以使用QVariant::type()
查找您存储在 QSettings 中的类型。
这就是 QSettings 应该如何工作,并且确实在 Windows 上使用 NativeFormat。
但是,当使用 ini 文件和对于大多数简单类型(包括字符串和整数)时,QSettings 在 ini 文件中使用相同的简单表示,因此会合并这些类型。它们都以 QVariant 中的 QString 类型返回。
更复杂的类型在 ini 文件中被正确编码,因此这些类型被保留。
如QSettings 中所述,不区分 string 和 int 值
QSettings 从 .ini 文件中读取的 QVariant 的每个值都具有字符串类型。
还提出了手动将类型信息附加到存储的字符串的解决方案。因此,如果在阅读过程中没有找到特殊的后缀,则可以手动决定是否转换为 int 或 bool。
顺便说一句,对于更复杂的类型(如QSize
),类型信息被存储,所以QVariat
类型是正确的。