2012-06-14 29 views
16

PySide ile MVVM'yi uygulamak için bir yol bulmaya çalışıyorum ama bunu yapamıyorum. QItemEditorFactory ile ViewModels'ten Görünümler oluşturmanın bir yolu olmalı ve veri bağlama yapmak için QDataWidgetMapper kullanabileceğimi düşünüyorum.PySide ile MVVM paterni

MVVM'nin Qt ve PySide ile nasıl uygulanabileceğine dair herhangi bir fikriniz var mı? C++ 'da bazı kaynaklar olsa bile bunları python'a çevirmeye çalışacağım.

Teşekkürler.

+0

Dünyada nasıl yaptım 'QDataWidgetMapper' Bilmiyorum. Kendimi uygulamaya başladım. Bir şekilde, tüm Qt belgelerini ve kaynaklarını araştırmamda, ona kör kaldım. Haritacım biraz farklı olsa da; Bir widget'ın keyfi bir indeksi haritalamasına izin verir, mevcut bir satır/sütun nosyonu yoktur. –

cevap

-2

Benim için açık bir cevap, MVVM'nin WPF ve bu modeli hoş karşılayan diğer bazı teknolojiler için uygun olduğudur. Bu nedenle, bu modeli diğer teknolojilere uygulamak mümkün olup olmadığını öğrenmek zorundasınız. Lütfen wiki'deki MVVM hakkında okuyun.

+0

C#/MVC modellerini yakından incelediğinizde temelde bir MVVM sistemidir. Bunlar sadece yapılar/desenler. – FlavorScape

1

MVVM, MVP (Model-View-Presenter) modelinin bir uzmanlığıydı ve WPF'ye özgü değil, ancak başlangıcındaydı. Anlamaya çalıştığınız şey, etki alanı modelinizi bu etki alanına bir görünüm olarak göstermek için bir MVP'dir. Eğer C++ örnekler, sen Ancak this PDF. görebilirsiniz istiyorsanız

, aşağıdaki manged C# veciz sinopsisten bunun özünü alabilirsiniz: Ayrıca

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

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

, Kullanabileceğin merak ediyorum abstract object notation, modelinizden geçerli modellere (görünüm modelleri) sahip olmanızı sağlar. Temel olarak, serileştirmek için ilgili parçaları işaretlemek için bir aracı işlevi gerekir.

0

MVVM'yi ne kadar almak istediğinizi bilmiyorum, ancak temel düzeyde Qt ile geliyor ve uzun zamandır kullanıyorum. Veri tabanına bağlı, şirkete özgü bir modeliniz var. Ardından, proxy model olarak görünüme özgü viewmodel oluşturursunuz. İhtiyacınıza bağlı olarak bunlardan birkaç katmanı istifleyebilirsiniz. Sonra bir manzara kullanarak gösterirsin. Her şey doğru kurulduğunda, "sadece çalışır". Şimdi bir görünümü yapılandırmak için bir model kullanmak istiyorsanız, Qt doğrudan sizin için hiçbir şey sağlamaz. Görünümü sizin için oluşturmak ve kurmak için viewmodel verilerini kullanabilecek bir fabrika sınıfı yazmanız gerekir. Her şey onu ne kadar almak istediğinize ve hangi mimari avantajları sağladığına bağlıdır.