如何使用QSettings在ini的部分中编写文件路径

时间:2014-10-14 18:39:07

标签: c++ qt filepath ini qsettings

我需要在ini文件中使用filepath作为节名,我尝试这样做:

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变量总是为空。

可能是什么问题?感谢。

3 个答案:

答案 0 :(得分:4)

查看QSettings::Format文档:

  

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这是我的错。我的问题中的代码有点简化。写作和阅读代码位于方法" save"和#34;加载"。我觉得自己很傻:(问题在于"输入参数"和#34;加载"方法之间的区别。在"保存"方法输入字符串是& #34; C:\ Users \ Username \ Documents \ 222.txt"以及"加载"方法" C:/Users/Username/Documents/222.txt"因此,当我尝试读取" loading"方法QSettings无法找到该部分时的设置。

根据我的理解,QSettings会逃脱特殊字符,如" \"用"%"符号。和" /"符号QSettings用于制作嵌套。所以我决定使用" C:\ Users \ Username \ Documents \ 222.txt"等路径。原样。它工作正常。谢谢大家。