私はリファクタリングを行っています。 Model-View-Controllerパターンを実装しています。ビューはQtウィジェットです。QAbstractTableModelサブクラスを使用するQtウィジェットを使用したMVC
元々、Qtウィジェットは、ヒープ上にQAbstractTableModelサブクラスの新しいインスタンスを作成しました。それをFooTableModelと呼ぶことができます。
例えば
Widget::Widget(QWidget* parent)
:
QWidget(parent)
m_model(new FooTableModel(this))
{
は私ではなく、MVCモデルにFooTableModelの新しいインスタンスを作成する必要がありますか?
そうすることによって、私はビューへの依存を作成することができます私はFooTableModelをFooTableModelコンストラクタに何も渡さないと、手動で削除することができ、また
を(私はまだFooTableModelコンストラクタにウィジェットのポインタを渡すと仮定して)私のMVCモデル。 *
最後のオプションは、FooTableModelの作成をウィジェットに残すことです。 (そしてウィジェットがFooTableModelを直接処理させるようにしてください)
何か提案や設定はありますか?
私の推測は、現時点では*とすることです。
提案していただきありがとうございます。 :)私のMVCモデルはQObjectではないので、私はそのデストラクタでクリーンアップを行います。私のMVCモデルは、ウィジェット全体に渡ってデータを処理しています.FooTableModelは、ウィジェットに描画されたQTableViewに使用されています。私はおそらくこれに固執するでしょう。 "Qtを使用している場合、FooTableModelはモデルになります"。ウィジェット全体のモデルとしてQtモデルを使用する必要があるのですか? (自分のものを転がすのではなく)私はこれをどうやってやるか分からない。私は通常、Qtモデルと関連するビューをリンクします。 –
大変遅れて申し訳ありません。はい、理想的には、いくつかのQAbstractItemModelクラスをウィジェット全体のモデルとして使用します。すべてのモデルがQAbstractItemModelへの参照と他のいくつかのプロパティへの参照を格納している場合は、そのモデルタイプから継承してプロパティを格納することもできます。これにより、Model/Viewフレームワークでさらに多くのオプションが可能になります。 –