我目前正在编写播放播客的应用程序。我将其中的所有资讯提供和剧集都表示为QStandardItem
QStandardItemModel
中的对象。目前,我没有办法保存这个模型 - 当应用程序关闭时,feed模型会冒烟。我看着使用QSettings
,但只适用于QVariant
下的数据类型。如何保存QStandardItemModel?
看着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的Qt文档中的这个警告,here。
任何具有公共默认构造函数,公共副本构造函数和公共析构函数的类或结构都可以注册。
那么,我该从哪里出发呢? Qt的行为完全按照它的样子,所以这种方法是行不通的。我正在考虑将模型保存为xml文件,但这似乎是一个很大的努力。这似乎是一个很常见的问题 - 我只是不知道在哪里寻找答案。
看起来没有好的方法来做到这一点......我可能不得不将这个序列化成一个文件。我会跟进我自己的解决方案。 –
据我所知,你需要从QStandardItemModel派生一个类并实现一个公共的复制构造函数。 –