【问题标题】:How to stop QSettings altering the order of key=value pairs in setting file?如何停止 QSettings 更改设置文件中键=值对的顺序?
【发布时间】:2013-12-10 15:22:17
【问题描述】:

在我的程序中,我有一个 Microsoft 的 INI 样式设置/配置文件,该文件是使用方便的 QSettings 类创建、编辑和存储的,但用户可以使用程序本身或她想要的任何文本编辑器手动编辑此文件geditvim。键=值对出现的顺序很重要。问题是每当我尝试在关机时存储更改时,键=值对的顺序都会更改为随机顺序,并且似乎无法阻止 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 会这样?

【问题讨论】:

    标签: qt5 ini qsettings


    【解决方案1】:

    QSettings 的行为是这样的,因为它旨在解决的问题是保存/检索单个键/值对,而不是对的有序列表。

    要解决这个问题,您需要:

    【讨论】:

    • 你测试过最后一个选项吗?
    • 恐怕不行,我选择了第一个选项。
    • 我改用了SQLite 数据库。表中的顺序保持不变,并且具有非常好的性能和安全性。使用您提到的第三个选项,我想我们可以在SQLite 数据库文件上执行读取和写入功能。我不再为此工作,但你的回答听起来很合理,所以我会接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    相关资源
    最近更新 更多