私は2つの方法でデータを表示したい異なるビューで異なる方法で同じモデルのデータを表示する
[
{'name': 'one', 'dir': '/path/to/foo'},
{'name': 'two', 'dir': '/path/to/bar'},
]
次のようになり、いくつかのデータを持っているとしましょう - フラットおよびネストされた(好ましく使用を両方のためのQTreeViews):
フラット
ネストされた
理想的には、私は彼らの両方が同じデータを使用するように、同じモデルを使用したいと私は他のと同期して、それらの各々を維持する心配する必要はありません。
問題はモデル/ビューシステムでは、階層はモデルが制御するものでありビューではないものと思われます。このシナリオでモデル/ビューフレームワークを使用するにはどうすればいいですか。
「ビューの種類」によって異なるものを返すようにモデルをオーバーライドする必要があります。モデルの「派生」アイテムのカスタム描画を行うビューをオーバーライドする必要がありますか?実際のモデルのデータを各ビューで表示できるものに変換するために使用できる「itermediateモデル」のようなものがありますか?
フラット構造とネスト構造の両方を表す単一のモデル(たとえば、「QStandardItemModel」)を使用できます。しかし、同時に*両方を行うことはできません。あなたのデータにも同じことが言えます。同時にフラットでも入れ子にもなれません*。 1つのタイプから別のタイプへの変換には、何らかの再構成変換が必要です。おそらく、異なる構造を表すアダプタを備えた単一の低レベルのデータモデルを持つことは可能でしょう。しかし、2つの別々のモデルを単純に同期させるよりも、これが簡単に維持できるかどうかはわかりません。 – ekhumoro