保存用户应用程序的数据

时间:2011-05-30 15:36:29

标签: c++ qt user-interface

我想知道为我正在处理的应用程序保存所有用户数据的正确方法是什么。申请是在QT。用户将大量数据输入到应用程序中,并且每个用户的数据都不同。我希望用户能够将所有当前数据保存到一个文件,该文件可以是用户想要再次使用它时再次由应用程序加载的用户,或者在运行该应用程序的另一台计算机上使用它。

这样做的正确和最佳方法是什么?我需要使用xml格式吗?然后使用xmlreader进行QT?或者我只需要创建自己的文件格式,只需使用流来读取所有内容。文件中的数据需要标记,因为它需要将数据放在gui的某些位置。用户可以选择动态创建包含特定信息的框和标签。

如果您需要更多信息,请告诉我们。


一个简短的例子:

  

我不仅阅读gui位置。   但那些内容。对于   实例。用户可以创建   包含编辑文本框的选项卡。和   这些选项卡与项目相关联   在列表中。当用户   单击用户列表中的项目   将提供一整套   新标签。每个标签都有一些   编辑表格。该文件需要   包含列表中的内容,选项卡   用户已在每个项目下创建   在该列表和每个的内容   与每个选项卡关联的选项卡   列表中的项目。

2 个答案:

答案 0 :(得分:2)

在本质上,是的,您将创建自己的文件格式,但实际内容可以是您需要的任何方案中的XML。然后你可以使用Qt的内置XML处理功能来解决文本的繁重问题(我个人更喜欢DOM模型,所以我使用QDomDocument作为我的基点),你只需要担心解析事情到并从各个节点。

如果我没记错的话,Qt框架有一些很棒的XML示例,这些示例帮助我几乎立即开始工作。希望他们帮忙!

答案 1 :(得分:2)

另一个很好的解决方案是使用内部数据库实现(在sqlite之上的QSQL)。与xml解决方案相比,它可能更通用(在需要时更新,可以使用外部密钥)。 Qt有一些关于使用它的rgeat例子。

就依赖性而言,XML解决方案将要求您使用xml和xmlpatterns(如果您想验证内容),而sqlite解决方案将需要QSQL + sqlite插件。我认为sqlite保证了写入的原子性,从而防止数据损坏(想想:用户在保存时杀死了应用程序)。