1

我需要使用文件路径作为 ini 文件中的部分名称,我尝试这样做:

QSettings ini(iniPath, QSettings::IniFormat);
ini.beginGroup("C:\\Users\\Username\\Documents\\222.txt");
ini.setValue(attributeName, attributeValue);
...
ini.endGroup();

然后我尝试从此部分读取值:

QSettings ini(iniPath, QSettings::IniFormat);
ini.beginGroup("C:\\Users\\Username\\Documents\\222.txt");
auto allKeys = ini.allKeys();
for (auto& key: allKeys)
{
   QString val = ini.value(key);
   ...
}
ini.endGroup();

但在输出文件中,我只能看到“[C%3AUsers%5CUsername%5CDocuments%5C222.txt]”作为部分名称。最重要的是QSettings在读取ini文件时找不到这个部分,allKeys变量总是空的。

可能是什么问题呢?谢谢。

4

3 回答 3

4

查看QSettings::Format文档:

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

于 2014-10-14T19:04:28.773 回答
0

这是我的错误。我的问题中的代码有点简化。读写代码位于方法“save”和“load”中。我觉得自己很傻:(问题在于“保存”和“加载”方法中的输入参数之间的差异。在“保存”方法中,输入字符串是“C:\Users\Username\Documents\222.txt”和“加载”方法是“C:/Users/Username/Documents/222.txt”,所以当我尝试读取“加载”方法中的设置时,QSettings 找不到该部分。

据我了解,QSettings 使用“%”符号转义特殊字符,如“\”。和“/”符号 QSettings 用于制作嵌套。所以我决定按原样使用像“C:\Users\Username\Documents\222.txt”这样的路径。它工作正常。谢谢你们。

于 2014-10-15T07:28:59.943 回答
0

使用QDir::fromNativeSeparators()作为部分名称。当您回读时,只需按原样使用路径(所有 Qt 类都支持它)或使用QDir::toNativeSeparators()将其转换为 Windows 样式。

于 2014-10-14T22:24:42.550 回答