我正在使用QSettings编写一个.ini文件,该文件将充当我的应用程序配置文件。只有一个问题:
QSettings将组名[General]添加到文件的顶部。
我以这种方式设置文件:
QSettings settings(QApplication::applicationDirPath() + fileName, QSettings::IniFormat);
并像这样写信:
settings.setValue("some_setting", theNumber);
然而,我最终将这些数据提供给的程序无法处理[General]标签。虽然我可以选择从文件中手动删除[General],但我想知道是否有可能让QSettings停止这样做。
我怀疑这种行为是由于指定QSettings::IniFormat
。但是,我没有看到任何其他选项会告诉它停止指定组。
知道我怎么能这样做吗?
答案 0 :(得分:4)
.ini文件格式是基于Microsoft在Windows上实现的事实上的标准。它需要存在部分。
无论您将文件提供给哪个应用程序,都不会真正实现.ini
文件格式,而是实现其他格式。
很可能你根本不应该使用QSettings
,而是手动实现这些功能。这应该不是问题,因为您只需将数据“提供”给其他软件。你不需要回读它。您可以将设置存储在常规QSettings
中,然后将其导出到文本文件中以供该应用程序阅读。
答案 1 :(得分:3)
是时候编写自己的QSettings文件格式了。
“文件格式”是一对带签名的两个方法:
bool readXmlFile(QIODevice &device, QSettings::SettingsMap &map);
bool writeXmlFile(QIODevice &device, const QSettings::SettingsMap &map);
一个应该从map
填充device
,第二个应该将map
转储到device
。你可以使用你想要的任何东西 - 没有[general]
组的xml,纯文本文件等。
之后,您应该使用QSettings::registerFormat
函数注册新的闪亮格式。
以下是文档:http://qt-project.org/doc/qt-5/qsettings.html#registerFormat
祝你好运。