0

我目前正在编写一个播放播客的应用程序。我将所有提要和其中的剧集表示QStandardItemQStandardItemModel. 现在,我没有办法保存这个模型——当应用程序关闭时,提要模型就烟消云散了。我查看了 using QSettings,但这仅适用于属于QVariant.

这篇文章给了我一些希望,但我认为我做错了什么。我的应用程序的构造函数中有以下代码。

//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 的 Qt 文档中的这个警告,这里

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

那么,我从这里去哪里?Qt 的行为与应有的完全一样,因此这种方法行不通。我正在考虑将模型保存为 xml 文件,但这似乎需要付出很多努力。这似乎是一个很常见的问题——我只是不知道在哪里寻找答案。

4

1 回答 1

0

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

于 2012-05-14T18:08:44.620 回答