【问题标题】:How do I deal with "Project Files" in my Qt application?如何在我的 Qt 应用程序中处理“项目文件”?
【发布时间】:2009-04-10 07:39:35
【问题描述】:

我的 Qt 应用程序应该能够一次创建/打开/保存单个“项目”。将项目设置存储在文件中的轻松方式是什么?它应该是 XML 还是其他不那么可怕的东西?

当然,要存储在文件中的数据会随着时间的推移而变化。

我需要的是类似于 QSettings 的东西,但仅限于我的应用程序中的一个项目,而不是整个应用程序。

【问题讨论】:

  • 项目设置是什么意思? Qt 生成的项目/Makefile 还不够吗?
  • 他的意思是:他的程序使用不同的项目。他想知道保存它的最佳方法。
  • @PoweRoy,这就是我想要的

标签: c++ xml qt settings


【解决方案1】:

您可以使用 QSettings 将数据存储在特定的 .ini 文件中。 来自文档:

有时您确实想访问存储在特定文件或注册表路径中的设置。在所有平台上,如果要直接读取 INI 文件,可以使用 QSettings 构造函数,该构造函数将文件名作为第一个参数,并将 QSettings::IniFormat 作为第二个参数传递。例如: QSettings 设置("/home/petra/misc/myapp.ini", QSettings::IniFormat);

【讨论】:

    【解决方案2】:

    我为了让它用户可编辑,我会坚持使用一个键 = 值的纯文本,就像在大多数 Linux 应用程序中一样。

    但这仅适用于设置,不适用于我认为需要更复杂结构的完整项目数据。

    所以也许JSON

    【讨论】:

      【解决方案3】:

      专业 XML:

      • 您可以在编辑器中查看它
      • 您可以在其中存储任何语言的任何类型的字符串(支持 unicode)
      • 简单易学
      • 多个程序可以读取相同的 XML
      • 使用 XML 组织数据很容易。例如,当您使用键/值列表时,当您需要保存树状结构时会遇到问题。

      反对 XML

      • 结果有些臃肿
      • 大多数编程语言(尤其是像 C++ 这样的旧语言)对 XML 没有很好的支持。旧的 XML API 的设计方式使得它们可以用任何语言(最小公分母)实现。 'nuff 说。
      • 您需要了解“编码”(或“字符集”)的概念。虽然乍一看这可能看起来微不足道,但有一些隐藏的问题可能会咬你。因此,请务必使用一些变音符号甚至日本汉字(日语字符)来测试您的代码,以确保您的代码正确。

      【讨论】:

      • 这个 API 基于 DOM,在我的书中,它不是一个“非常好的 XML API”。我更喜欢像 "html.body.p[3].text = '...'" 而不是 getRootElement().getChildElement("body").getChildElements("p").get(3).setText(" ...");
      猜你喜欢
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      • 2018-09-25
      • 2021-11-04
      相关资源
      最近更新 更多