2010-11-19 2 views
1

Qt에서 어떻게 MV를 사용합니까? 나는이 두 가지 방법을 시도했다 :Qt Model-View Architecture를 사용하기 위해 선호하는 패턴은 무엇입니까?

  1. /기존에게 코드 "데이터"-classes를 존재하는 이 있다면, 나는 외관으로 모델 을 사용합니다. 모델 구현 클래스는 데이터에 대한 참조를 가져오고 모델 항목 액세스 호출에서 함수를 호출합니다. 새로운 구현를 들어

  2. 나는 QAbstractModel에서 데이터 클래스 파생.

다른 방법이 있습니까?

+0

FWIW, 이것은 내가하는 일과 비슷합니다. 1) * 위젯 클래스를 사용하는 기존 코드가있는 경우 기능적으로 정밀 검사가 필요하지 않으면 그대로 두십시오. 2) 기존/기존 코드 데이터 클래스가있는 경우 모델을 파사드로 사용합니다. 3) 새로운 구현이 필요한 경우 데이터와 본질적으로 얼마나 관련이 있습니까? 좋은 양이라면 데이터 클래스를 생성하고 모델을 파사드로 사용하여 일반적으로 메소드가 UI 세부 사항과 분리되도록합니다. 4) 그렇지 않으면 QAbstractModel에서 파생됩니다. –

답변

1

내가 끝내는 접근법은 당신이 제안한 것과 비슷합니다. 현재 QAbstractModel에 레거시 데이터 모델을 매핑하기 위해 파사드를 사용하고 있습니다.

처음에는 외관이 약간 복잡했지만 천천히 외관 모델에서 기능을 끌어 내 데이터 모델로 밀어 넣습니다. 그리고 언젠가는 내 모델이 모델이되도록 외관을 완전히 제거 할 것입니다.

단일 모델을 사용하면 머리가 아플 수 있습니다.

-1

Qt의 MV 코드는 약간 엉망이며 구현하기 까다 롭습니다. 특히 계층 적 목록 (트리 뷰)을 구현해야하는 경우.

필요에 따라 QListWidget, QTableWidgetQTreeWidget 편의 클래스를 사용하면 어떤 경우에는 고통이 훨씬 적을 수 있음을 발견했습니다.

+0

-1 죄송합니다. Qt에서 MV를 사용하는 것이 가장 좋은 대안이 될 수 있습니다. 사실 나는 그들을 지저분하다고 생각하지 않는다. 대조적으로 모든 종류의 모델 (트리, 테이블,리스트)은 저에게 잘 작동합니다. 죄송합니다. 이러한 오래된 편의 클래스는 단순한 응용 프로그램에서는 옵션이 아닙니다. –

+0

그 경우 ... http://doc.qt.nokia.com/4.7/model-view-programming.html – BastiBen

관련 문제