Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 如何保存QStandarItemModel?_Model View Controller_Qt - Fatal编程技术网

Model view controller 如何保存QStandarItemModel?

Model view controller 如何保存QStandarItemModel?,model-view-controller,qt,Model View Controller,Qt,我目前正在编写一个播放播客的应用程序。我将所有提要和其中的片段表示为QStandardItem模型中的QStandardItem对象。现在,我没有办法保存这个模型,当应用程序关闭时,提要模型将化为乌有。我考虑过使用QSettings,但这只适用于属于QVariant的数据类型 看着她给了我一些希望,但我觉得我做错了什么。我的应用程序的构造函数中有以下代码 //Expand QVatiant to use QStandardItemModel qRegisterMetaType<QStand

我目前正在编写一个播放播客的应用程序。我将所有提要和其中的片段表示为QStandardItem模型中的QStandardItem对象。现在,我没有办法保存这个模型,当应用程序关闭时,提要模型将化为乌有。我考虑过使用QSettings,但这只适用于属于QVariant的数据类型

看着她给了我一些希望,但我觉得我做错了什么。我的应用程序的构造函数中有以下代码

//Expand QVatiant to use QStandardItemModel
qRegisterMetaType<QStandardItemModel>("QStandardItemModel");
啊。这让我想起了QMetaType的Qt文档中的警告

可以注册具有公共默认构造函数、公共副本构造函数和公共析构函数的任何类或结构


那么,我该怎么办?Qt的行为完全符合它的要求,所以这种方法不起作用。我正在考虑将模型保存为xml文件,但这似乎是一项艰巨的工作。这似乎是一个非常常见的问题,我只是不知道在哪里可以找到答案。

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

看起来没有好的方法来实现这一点……我可能不得不以某种方式将其序列化到文件中。我将继续使用我自己的解决方案。据我所知,您需要从QStandardItemModel派生一个类,并实现一个公共副本构造函数。
/ [...] QtSDK/Desktop/Qt/4.8.1/gcc/lib/QtGui.framework/Versions/4/Headers/qstandarditemmodel.h:424: error: 'QStandardItemModel::QStandardItemModel(const QStandardItemModel&)' is private