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