我目前正在編寫播放播客的應用程序。我將其中的所有資訊提供和劇集都表示爲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派生一個類並實現一個公共的複製構造函數。 –