在我的程序中,我有一个Microsoft INI风格的设置/配置文件,该文件是使用方便的QSettings
类创建、编辑和存储的,但用户可以使用程序本身或她想要的任何文本编辑器(如gedit
或vim
)手动编辑该文件。键=值对出现的顺序很重要。问题是,每当我试图在关闭时存储更改时,密钥=值对的顺序都会变为随机顺序,似乎不可能阻止QSettings
更改它
[AlarmGroup1]
DateTimeNotInitialized=1
DateTimeStampError=2
ParametersMissingOrInconsistent=3
NotInitialized=4
FlashMemoryFatalError=5
NotIdentified=6
更改为:
[AlarmGroup1]
ParametersMissingOrInconsistent=3
DateTimeNotInitialized=1
DateTimeStampError=2
NotInitialized=4
FlashMemoryFatalError=5
NotIdentified=6
有可能避免秩序的改变吗?Qsettings
为什么会这样?
QSettings之所以如此,是因为它旨在解决的问题是保存/检索单个键/值对,而不是有序的对列表。
要解决这个问题,您需要:
- 从程序中删除特定订单的要求
- 编写自己的QSettings
- 编写一个"自定义存储格式提供程序"以传递到QSettingshttp://doc.qt.io/qt-5/qsettings.html#registerFormat