0

現在、ポッドキャストを再生するアプリケーションを作成しています。すべてのフィードとその中のエピソードを 内のQStandardItemオブジェクトとして表していますQStandardItemModel。現時点では、このモデルを保存する方法がありません。アプリケーションを閉じると、フィード モデルが煙に包まれます。の使用を検討しまし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 に答える