문제

MPV가 어떻게 작동하는지 이해합니다. 그러나 나는 어떤 수업을 얻지 못합니다 :

  • QAbstractItemModel
  • QAbstractItemView
  • QAbstractItemDelegate / QItemDelegate

나를 위해 할 수 있습니까?

그것이 관련이 있다면, 나는 사용하고 있습니다QGraphicsScene / QGraphicsView 상호 작용 로직 (게임 규칙)이 다른 클래스에서 캡슐화되는 동안 사용자와 상호 작용할 수있는 일부 요소 (게임 보드의 시각적 표현)를 사용하면됩니다.

도움이 되었습니까?

해결책

AbstractItemModel QABSTRANTITEMVIEW QABSTRANTITEMDELEGATE

에서 왔습니다 "모드/뷰 프레임 워크"
이것은 응용 프로그램의 데이터 부분을위한 매우 강력한 프레임 워크입니다. 여기 프레임 워크의 프레젠테이션입니다.

qabstractItemModel

The의 기본 클래스입니다 MVC의 모델. 데이터에 액세스하고 변경하기위한 전역 인터페이스가 있으며 관찰 가능한 부분을 처리합니다.

qabstractItemView

The의 기본 클래스입니다 MVC의 견해. 보기/선택 부분에 대한 Aglobal 인터페이스가 있으며 관찰자 부분을 관리합니다. 관찰자 패턴에 대해 걱정할 필요가 없습니다. 프레임 워크가 당신을 위해 그것을합니다.

qabstractitemdelegate

The의 기본 클래스입니다 MVC의 컨트롤러.
그림, 요소 편집의 전략 패턴입니다.


qgraphicsscene / qgraphicsview

에서 왔습니다 "그래픽보기 프레임 워크" 그리고입니다 모델/보기 프레임 워크와 무관합니다.
이것은 또한 그래픽 부분을위한 매우 강력한 프레임 워크입니다.

장면

qgraphicsscene은 그래픽보기 장면을 제공합니다. 장면에는 다음과 같은 책임이 있습니다.

변환되지 않은 렌더링 기능을 제공하는 선택 및 포커스 처리와 같은 각 항목 관리 항목 상태에 이벤트를 전파하는 많은 항목을 관리하기위한 빠른 인터페이스를 제공합니다. 주로 인쇄 용

보기

QgraphicsView는 장면의 내용을 시각화하는보기 위젯을 제공합니다. 동일한 데이터 세트에 여러 뷰포트를 제공하기 위해 동일한 장면에 여러 뷰를 첨부 할 수 있습니다.


QGRAPHICSVIEW에서 모델이 보이기를 원한다면 QABSTRANTITEMVIEW를 기반으로 자신의 견해를 작성해야합니다.
QGRAPHICSVIEW를 포트 위젯보기로 사용하십시오 QAbstractScrollArea::setViewport(QWidget * widget)) 그리고 당신은 할 수 있습니다

  • 추가하다 QAbstractItemView::rowsInserted,
  • 제거하다 QAbstractItemView::rowsAboutToBeRemoved
  • 그리고 변화 QAbstractItemView::dataChanged

장면의 항목. 레이아웃 변경 이벤트를 재설정하는 것을 잊지 마십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top