QSettings:是否可以禁用组?

QSettings: Is it possible to disable groups?

本文关键字:是否 QSettings      更新时间:2023-10-16

我使用QSettings来编写一个.ini文件,它将作为我的应用程序配置文件。只有一个问题:

QSettings将组名[General]添加到文件的顶部。

我这样设置文件:

QSettings settings(QApplication::applicationDirPath() + fileName, QSettings::IniFormat);

,这样写:

settings.setValue("some_setting", theNumber);

然而,我最终提供这些数据的程序不能处理[General]标签。虽然我当然可以手动从文件中删除[General],但我想知道是否有可能使QSettings停止这样做。

我怀疑这个行为是由于指定了QSettings::IniFormat。但是,我没有看到任何其他选项可以告诉它停止指定组。

你知道我该怎么做吗?

.ini文件格式是基于Microsoft从Windows实现的事实上的标准。它要求有节。

无论你将文件提供给什么应用程序,都不会真正实现.ini文件格式,而是其他格式。

很可能你根本不应该使用QSettings,而是手动实现该功能。这应该不是问题,因为您这样做只是为了将数据"馈送"给其他软件。你不需要再读一遍。您可以将您的设置存储在常规的QSettings中,然后将它们导出到一个文本文件以供该应用程序阅读。

是时候编写自己的QSettings文件格式了。

"file format"是一对带有签名的方法:

bool readXmlFile(QIODevice &device, QSettings::SettingsMap &map);
bool writeXmlFile(QIODevice &device, const QSettings::SettingsMap &map);

一个应该从device填充map,第二个应该将map转储到device。你可以使用任何你想要的——xml,没有[general]组的纯文本文件等。

之后,您应该使用QSettings::registerFormat函数注册新的闪亮格式。

这里是文档:http://qt-project.org/doc/qt-5/qsettings.html#registerFormat

好运。