2010-11-19 4 views
1

QtでのMVの使い方は? 既存/レガシー コード「データ」-classesがあれば、私はファサードとしてモデル を使用し、Qt Model-View Architectureを使用するための推奨パターンは何ですか?

  1. :私はこれらの二つのアプローチを試みました。 モデル実装クラスは、 のデータへの参照を取得し、モデルアイテムへのアクセス 呼び出しで 関数を呼び出します。 新しい実装については

  2. 私はQAbstractModelから データクラスを派生。

他にもありますか?

+0

FWIW、これは私のやり方と似ています。 1)*ウィジェットクラスを使用する既存のコードがある場合は、機能上のオーバーホールが必要な場合を除き、そのまま残しておきます。 2)既存/既存のコードデータクラスがある場合は、そのモデルをファサードとして使用します。 3)新しい実装が必要な場合、データに本質的にどれだけの関連性がありますか?良い量であれば、私はデータクラスを作成し、モデルをファサードとして使用するので、メソッドは一般にUIの詳細から切り離されます。 4)それ以外はQAbstractModelから派生します。 –

答えて

1

私が取り上げたアプローチは、あなたが提案するアプローチに似ています。私は現在、QAbstractModelにレガシーデータモデルをマップするためにファサードを使用しています。

最初はファサードがやや複雑すぎましたが、徐々にファサードモデルから機能を引き出し、それを自分のデータモデルにプッシュしています。そしてある日、私のモデルがモデルになるようにファサードを完全に削除します。

単一のモデルを使用すると、頭が痛くなります。

-1

QtのMVコードはちょっと混乱しており、実装するのに手間がかかります。特に、階層リスト(ツリービュー)を実装する必要がある場合。

必要に応じて、QListWidgetQTableWidgetQTreeWidgetという便利なクラスを使用すると、場合によっては苦痛を軽減することができます。

+0

-1申し訳ありませんが、QtのMVを使ったベストプラクティスの代替案を求めていません。実際に私はそれらが乱雑であるとは思わない。対照的に。あらゆる種類のモデル(木、テーブル、リスト)は私のためにうまく動作します。申し訳ありませんが、これらの古いコンビニエンスクラスは、自明ではないアプリケーションのオプションではありません。 –

+0

その場合... http://doc.qt.nokia.com/4.7/model-view-programming.html – BastiBen

関連する問題