c++ - QSettings - 读取路径值的方式是什么?

标签 c++ windows qt ini

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

最佳答案

Although backslash is a special character in INI files, most Windows applications don't escape backslashes () in file paths [...]

QSettings always treats backslash as a special character and provides no API for reading or writing such entries.

这是文档必须说明的内容。这是一种礼貌的说法,“如果其他代码执行此操作,则说明它们不遵循 WINAPI 规范并且它已损坏,我们不应该处理它”。您的 .ini 文件几乎已损坏。

如果您想阅读它们,您可能需要为 QSettings 提供您自己的后端。通过复制作为 Qt 一部分的后端,并修改它不执行转义,可以很容易地获得这样的后端。

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

关于c++ - QSettings - 读取路径值的方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31143938/

相关文章:

java - 双击运行 Java 应用程序

windows - Google Chrome 显示宽度为 1920 的奇怪下拉横幅?

qt - 当删除其中一个类时,Qt中的信号是否会自动断开

c++ - STL有hashmap数据结构吗?

c++ - 如何获取脚本以在 C++ 中插入整个用户输入

Windows 10 Creators Update 更改 PropertyGrid 控件的样式

QT Creator 无法在i.Mx6 (buildroot) 上远程运行和调试

c++ - Qt 在 QtWebEngine View 中显示 QImage 或像素图(从 C++ 到 HTML)

c++ - 如何随机打乱 vector 中的元素

c# - 如何将委托(delegate)或函数指针从 C# 传递到 C++ 并使用 InternalCall 调用它