12

MPV がどのように機能するかは大体理解できます。しかし、私はどのクラスを取得していません:

  • QAbstractItemModel
  • QAbstractItemView
  • QAbstractItemDelegate/QItemDelegate

私にできますか?

それが関連している場合 、対話ロジック (ゲーム ルール) が他のクラスにカプセル化されている間、ユーザーが対話できるいくつかの要素 (ゲーム ボードの視覚的表現) と共にQGraphicsScene/を使用しています。QGraphicsView

4

1 に答える 1

13

AbstractItemModel QAbstractItemView QAbstractItemDelegate

「モード/ビュー フレームワーク」からのものです。
これは、アプリケーションのデータ部分のための非常に強力なフレームワークです。フレームワークのプレゼンテーションを次に示します。

QAbstractItemModel

MVCのモデルの基本クラスです。データにアクセスして変更するためのグローバル インターフェイスを持ち、Observable 部分を処理します。

QAbstractItemView

MVCのビューの基本クラスです。ビュー/選択部分のグローバル インターフェイスがあり、オブザーバー部分を処理します。オブザーバー パターンについて心配する必要はありません。フレームワークが自動的に行います。

QAbstractItemDelegate

MVCのコントローラーの基本クラスです。
描画、要素の編集、...


QGraphicsScene / QGraphicsView

「グラフィック ビュー フレームワーク」からのものであり、モデル/ビュー フレームワークから独立しています。
これは、グラフィック部分の非常に強力なフレームワークでもあります。

シーン

QGraphicsScene は Graphics View シーンを提供します。シーンには次の責任があります。

多数のアイテムを管理するための高速インターフェイスを提供する イベントを各アイテムに伝達する 選択やフォーカスの処理など、アイテムの状態を管理する 非変換レンダリング機能を提供する。主に印刷用

景色

QGraphicsView は、シーンのコンテンツを視覚化するビュー ウィジェットを提供します。複数のビューを同じシーンにアタッチして、複数のビューポートを同じデータ セットに提供できます。


モデルを QGraphicsView で表示したい場合は、QAbstractItemView に基づいて独自のビューを作成する必要があります。
QGraphicsView をビュー ポート ウィジェットとして使用するQAbstractScrollArea::setViewport(QWidget * widget)) と、次のことができます

  • 追加 QAbstractItemView::rowsInserted
  • 削除する QAbstractItemView::rowsAboutToBeRemoved
  • 変更する QAbstractItemView::dataChanged

シーンのアイテム。レイアウト変更イベントのリセットに注意することを忘れないでください。

于 2009-06-17T07:29:21.900 に答える