2012-06-14 5 views
16

저는 PySide를 사용하여 MVVM을 구현할 수있는 방법을 찾으려고했지만 할 수 없었습니다. ViewModels에서 QItemEditorFactory를 사용하여 Views를 만들고 데이터 바인딩을 수행하는 방법은 QDataWidgetMapper를 사용할 수 있다고 생각합니다.PySide를 사용하는 MVVM 패턴

MVVM을 Qt 및 PySide와 함께 구현하는 방법에 대한 아이디어가 있습니까? C++에 리소스가 있더라도 파이썬으로 변환하려고합니다.

감사합니다.

+0

어떻게 지구에서 나는'QDataWidgetMapper'를 놓쳤는 지 모르겠습니다. 나는 나 자신을 구현했다. 여하튼, Qt 문서와 소스에 대한 나의 모든 탐구에서 나는 그것에 대해 눈이 멀었습니다. 내 매퍼가 조금 다르긴하지만; 그것은 하나의 맵을 위젯에 임의의 인덱스로 만들 수 있습니다. 현재 행/컬럼에 대한 개념은 없습니다. –

답변

-2

MVVM은 WPF 및이 패턴을 환영하는 일부 기술자에게 적합하므로 다른 기술에이 패턴을 적용 할 수 있는지 여부를 알아야합니다. 위키에서 MVVM을 읽으십시오.

+0

C#/MVC에서 뷰 모델을 전달할 때 기본적으로 MVVM 시스템입니다. 이것들은 단순한 구조/패턴입니다. – FlavorScape

1

MVVM은 MVP (Model-View-Presenter) 패턴의 전문화이며 WPF만의 고유 한 것은 아니지만 처음 소개되었습니다. 나는 당신이 얻으려고하는 것이 그 도메인에 대한 뷰로서 도메인 모델을 드러내는 MVP라고 생각한다. 당신의 C++에서 예, 당신은 그러나 this PDF.을 볼 수 있습니다 원하는 경우

, 아래 manged했던 C#에서 간결한 개요에서의 요점을 얻을 수 있습니다 또한

public class DomainView : IDomainView 
{ 
    private IDomainPresenter domainPresenter = null; 

    ///<summary>Constructor</summary> 
    public DomainView() 
    { 
     domainPresenter = new ConcreteDomainPresenter(this); 
    } 
} 

, 난 당신이 사용할 수 궁금하네요 abstract object notation을 사용하면 모델에서보기로 통행 가능한 generics (보기 모델)를 만들 수 있습니다. 기본적으로 직렬화 할 관련 부분에 플래그를 지정하는 중간 함수가 필요합니다.

0

MVVM을 얼마나 원하십니까?하지만 기본적인 수준에서는 Qt가 제공되며 오랫동안 사용해 왔습니다. 데이터베이스에 묶여있는 비즈니스 관련 모델이 있습니다. 그런 다음 뷰 특정 viewmodel을 프록시 모델로 만듭니다. 필요한 것에 따라 몇 개의 레이어를 쌓을 수 있습니다. 그런 다음보기를 사용하여 표시합니다. 모든 것이 올바르게 설정되는 한, 그것은 단지 "효과가있을 것"입니다. 이제 모델을 사용하여 뷰를 구성하려는 경우 Qt는 직접적인 것을 제공하지 않습니다. 뷰 모델 데이터를 사용하여 뷰를 인스턴스화하고 설정할 수있는 팩토리 클래스를 작성해야합니다. 모든 것은 당신이 그것을 얼마나 갖고 싶어하는지, 그리고 그것이 당신에게주는 건축상의 이점에 달려 있습니다.