C++ Q设置:是否可以禁用组?
我正在使用QSettings编写一个.ini文件,该文件将用作我的应用程序配置文件。只有一个问题: QSettings将组名[General]添加到文件顶部 我通过以下方式设置文件:C++ Q设置:是否可以禁用组?,c++,qt,ini,qsettings,C++,Qt,Ini,Qsettings,我正在使用QSettings编写一个.ini文件,该文件将用作我的应用程序配置文件。只有一个问题: QSettings将组名[General]添加到文件顶部 我通过以下方式设置文件: QSettings settings(QApplication::applicationDirPath() + fileName, QSettings::IniFormat); 然后像这样写信给它: settings.setValue("some_setting", theNumber); 但是,我最终输入这些
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);
一个应该从设备
填充映射
,第二个应该将映射
转储到设备
。您可以在那里使用任何您想要的东西——xml、无需[general]
组的纯文本文件等
之后,您应该使用QSettings::registerFormat
函数注册新的闪亮格式
以下是文件:
祝你好运 您可能应该重新考虑使用
QApplication::applicationDirPath()
作为存储位置。这是程序的可执行文件所在的目录,因此通常不是用户可写的位置,例如管理员在系统范围内安装的软件这是很久以前的项目,但在我的使用案例中,它总是安装在用户可写的位置(这是一个爱好者的最终用户应用程序)-但是很好的捕获