Qt:使用INI文件和注释在Windows上进行QSettings

dwj*_*dwj 6 windows ini qt

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

例如:

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

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

QSettings settings( "settings.ini", QSettings::IniFormat );
Run Code Online (Sandbox Code Playgroud)

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

抢先评论:

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

Gyö*_*sek 6

QSettings没有"拯救"的概念.您对它所做的所有更改都被认为是最终的,并且经常透明地写入磁盘.

在文档中QSettings,没有提及ini文件中的注释.它确实有道理:毕竟,它也可以是一个注册表值.像生成的文件一样对待它:它是一个.

这是我的建议:

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

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