QSettings - 读取路径值的方法是什么?

时间:2015-06-30 16:47:35

标签: c++ windows qt ini

使用windows xp,我想从.ini文件中读取一个值。 值是路径。 使用QSettings,调用" settings.value(" key")。toString()"是排除反斜杠的路径,因为反斜杠是转义字符。 使用QSettings从ini文件读取路径的方法是什么?

2 个答案:

答案 0 :(得分:3)

  

虽然反斜杠是INI文件中的特殊字符,但大多数Windows应用程序不会在文件路径中转义反斜杠()[...]

     

QSettings始终将反斜杠视为特殊字符,并且不提供用于读取或写入此类条目的API。

这是文档有关它的说法。这是一种礼貌的方式,说“如果其他代码执行它,它们不遵循WINAPI规范,它已经破坏,我们不应该处理它”。几乎你的.ini文件都坏了。

如果您希望阅读它们,则可能需要为QSettings提供自己的后端。这样的后端可以通过复制作为Qt一部分的那个,并修改它不执行转义来轻松获得。

您需要调查是否为此目的编写自己的QTextCodec并将其传递给QSettings::setIniCodec就足够了。如果足够,您将不需要提供整个后端。

答案 1 :(得分:0)

为了尽量减少兼容性问题,任何没有出现在值的第一个位置或后面没有 Qt 类型(Point、Rect、Size 等)的 @ 都被视为普通字符。 尽管反斜杠是 INI 文件中的特殊字符,但大多数 Windows 应用程序不会对文件路径中的反斜杠 () 进行转义 enter link description here