繁体   English   中英

QSettings:是否可以禁用组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM