1

私はPyQt4を使用しており、に基づいて階層モデルを作成しましたQAbstractItemModel。これは自然に厳格な階層を形成します。

 - Study
  - Recording
   - Config

studyアイテムはモデルのルート アイテムであり、そのQTreeView下に記録アイテムのリストと、それらのネストされた構成アイテムが表示されます。

QTreeView. _ 設定項目の種類によって、表示されるメタフィールドの数が異なるので、QTableView.

このQDataWidgetMapperクラスはこのタイプの機能を容易にしているように見えますが、一度に複数のフィールドを表示するウィジェットの例を見つけることができませんでした (つまり、ライン編集、コンボ ボックス、チェック ボックスなどを除く)。プロキシ モデルは別の潜在的なルートのように思えますが、この方法で選択に基づいてモデルのサブセットを表示する方法がわかりません。

モデル/ビューフレームワークを使用して目標を達成する方法について誰か提案がありますか?

4

1 に答える 1

1

最終的に、いくつかのプロキシ モデルを使用したソリューションを思いつきました。

QTreeViewのサブクラスを使用して、表示する情報を含む最初の 3 つを除外して、モデルに追加の列を追加しましたQSortFilterProxyModel

次に、選択モデルは、各モデル項目の「選択済み」属性を設定するメソッドにリンクされました。このブログ投稿に触発された1 つのプロキシ モデルは、最初にツリーを同じ順序のテーブルのようなモデルにフラット化します。次に、別のプロキシ モデルが選択属性に基づいて行をフィルタリングし、別のプロキシ モデルが上記の拡張セットから空でない列をフィルタリングします。

これにより、目的のメタ情報を含む単一行* テーブルが作成されます。それを列として表示するには、派生した追加のプロキシ モデルQAbstractProxyModelを使用して、行を列に、またはその逆にマッピングしてテーブルを転置します。

※一度に選択できるアイテムは1つだけのため、1行になっています。

于 2013-01-05T21:50:12.307 に答える