【问题标题】:Qt: QSettings on Windows with INI files and commentsQt:带有 INI 文件和注释的 Windows 上的 QSettings
【发布时间】:2010-12-15 07:29:18
【问题描述】:

我有一个在 Windows 上使用 Qt 4.5.2 编写的应用程序。我将一些设置存储在 INI 文件中,并使用 QSettings 加载和保存设置。我想在 INI 文件中有一些 cmets。

例如:

; Meta-info to store with the file
[General]
MainWindow\size=@Size(1280 600)
MainWindow\pos=@Point(0 300)
Debugging=true

但是,我在加载设置文件时发现

QSettings settings( "settings.ini", QSettings::IniFormat );

cmets 被从文件中删除。 INI 文件在加载后通过调用 QSettings::sync() 被重写(这由构造函数自动完成)。有没有办法在同步后保留 cmets?

抢占式 cmets:

  • 我想要 Windows 中的 INI 文件以实现未来的跨平台兼容性
  • 我想将元信息存储在文件中以供应用程序外部参考
  • 我正在考虑将元信息作为 INI 的一部分并使用 name=value 规则,但我更愿意将信息保留为注释

【问题讨论】:

    标签: windows qt ini


    【解决方案1】:

    QSettings 没有“保存”的概念。您对其所做的所有更改都被认为是最终更改,并且会经常且透明地写入磁盘。

    QSettings的文档中,没有提到ini文件中的cmets。它确实有一定的意义:毕竟,它也可以是一个注册表值。将其视为生成的文件:它是一个。

    这是我的建议:

    [General]
    Comment = @String(Meta-info to store with the file)
    MainWindow\size=@Size(1280 600)
    MainWindow\pos=@Point(0 300)
    Debugging=true
    

    我不知道它是否有效,试一试看看它实际上是如何存储字符串的。哦,请确保您从代码中设置它或正确记录它,以避免在程序中意外使用相同的标识符。

    【讨论】:

    • 关键行:“把它当作一个生成的文件:它是一个。”我认为这一切都说。如果我想对文件进行非 Qt 设置,那么它并不是真正的 Qt 设置文件。
    猜你喜欢
    • 2011-05-04
    • 2012-12-12
    • 2013-04-18
    • 2012-05-27
    • 2010-11-25
    • 2011-07-28
    • 2013-09-23
    • 1970-01-01
    • 2016-01-09
    相关资源
    最近更新 更多