[英]QSettings: Is it possible to disable groups?
我正在使用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文件格式了。
“文件格式”是两个带签名的方法对:
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
祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.