如何保存QStandardItemModel?

时间:2012-05-04 19:25:40

标签: model-view-controller qt

我目前正在编写一个播放播客的应用程序。我将QStandardItem内的所有Feed和剧集表示为QStandardItemModel个对象。现在,我没有办法保存这个模型 - 当应用程序关闭时,Feed模型会冒烟。我查看了使用QSettings,但这仅适用于QVariant下的数据类型。

看着this post给了我一些希望,但我认为我做错了什么。我在我的应用程序的构造函数中有以下代码。

//Expand QVatiant to use QStandardItemModel
qRegisterMetaType<QStandardItemModel>("QStandardItemModel");

然而,这在编译时给了我这个错误。

/ [...] QtSDK/Desktop/Qt/4.8.1/gcc/lib/QtGui.framework/Versions/4/Headers/qstandarditemmodel.h:424: error: 'QStandardItemModel::QStandardItemModel(const QStandardItemModel&)' is private

阿。这让我想起了QMetaType here的Qt文档中的这个警告。

  

任何具有公共默认构造函数,公共复制构造函数和公共析构函数的类或结构都可以注册。

那么,我从哪里开始呢? Qt表现完全正常,所以这种方法不起作用。我正在考虑将模型保存为xml文件,但这似乎需要付出很多努力。这似乎是一个非常普遍的问题 - 我只是不知道在哪里寻找答案。

1 个答案:

答案 0 :(得分:0)

这是我能想到的最佳解决方案:创建一个方法,将模型保存到XML文档中,并在我更改模型时调用它(例如添加或删除播客)。我手边没有实际的源代码,但由于没有真正简单的方法来保存数据结构批发,这是最好的解决方案。