我正在编写一个 Qt 应用程序,并且需要存储程序的设置。我希望它们可以被非高级用户轻松编辑,但对高级用户来说足够灵活(因此允许通过其他程序、脚本等轻松进行自动编辑)。QSettings 确实提供了两种格式,本机格式,对于 Windows 是注册表,以及 INI 格式,对于大多数其他平台是本机格式。INI 很好,但是在其中看到 @QString(...) 或其他 Qt 内容并不是真正可读的,而且有点容易出错。
注册表也不是很好。它的设计初衷不是为了搞乱,因此不太适合编辑或高级使用;它确实解决了跨线程和多个 QSettings 对象的同步问题(因此我不会清除所有内容,尽管我可以只使用一个受读写锁保护的全局对象)。我正在查看 XML,但它非常冗长,并且确实需要编写 QSettings 格式(不是真正的问题),但非常灵活。
我知道 XML 的其他替代品存在,但我并不真正熟悉它们;我当然不想编写解析器,我自己的最终格式是例外,而不是基本的东西。
更新 - 注意:我根本不会绕过 QSettings,我只会为它编写一个格式 - 看起来它只是传递给静态函数的两个函数指针(用于读取和写入函数),然后我可以使用我的格式。
更新 2:我也担心 Linux 服务器,它们通常没有 GUI。我希望人们能够通过 nano 或类似的东西轻松地从服务器编辑配置,而无需使用管理器(是的,我会有一个守护程序服务器和一个远程 GUI 管理器)。