我正在使用QSettings编写一个.ini文件,该文件将用作我的应用程序配置文件。只有一个问题:
QSettings会将组名常规添加到文件的顶部。
我这样设置文件:
QSettings settings(QApplication::applicationDirPath() + fileName, QSettings::IniFormat);然后像这样写:
settings.setValue("some_setting", theNumber);但是,我最终提供这些数据的程序不能处理General标签。虽然手动从文件中删除General对我来说肯定是一个选择,但我想知道是否可以让QSettings停止这样做。
我怀疑这种行为是由于指定了QSettings::IniFormat造成的。但是,我没有看到任何其他选项会告诉它停止指定组。
你知道我该怎么做吗?
发布于 2014-08-15 07:28:07
.ini文件格式是基于微软从视窗实现的事实上的标准。它需要节的存在。
无论您将文件提供给哪个应用程序,都不会真正实现.ini文件格式,而是实现其他格式。
您很可能根本不应该使用QSettings,而是手动实现该功能。这应该不是问题,因为您这样做只是为了将数据“馈送”到其他软件。你不需要再读一遍。您可以将您的设置存储在常规QSettings中,然后将它们导出到文本文件中,以供该应用程序阅读。
发布于 2014-08-15 23:35:13
是时候编写您自己的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
祝好运。
https://stackoverflow.com/questions/25318467
复制相似问题