2012-06-14 12 views
16

Próbowałem znaleźć sposób na wdrożenie MVVM z PySide, ale nie udało się. Myślę, że powinien istnieć sposób tworzenia widoków z ViewModels z QItemEditorFactory, i do wykonywania powiązań danych Myślę, że mogę użyć QDataWidgetMapper.Wzór MVVM z PySide

Czy masz jakieś pomysły na to, jak można wdrożyć MVVM w Qt i PySide? Nawet jeśli w C++ jest trochę zasobów, spróbuję przetłumaczyć je na pythona.

Dzięki.

+0

Jak na Ziemi brakowało mi 'QDataWidgetMapper', którego nie znam. Skończyło się na tym, że sam ją wdrożyłem. W jakiś sposób, podczas całej mojej eksploracji dokumentacji Qt i źródeł, pozostałem niewidomy. Chociaż mój program odwzorowujący jest nieco inny; pozwala mapować dowolny indeks do widżetu, nie ma pojęcia bieżącego wiersza/kolumny. –

Odpowiedz

-2

Oczywistą odpowiedzią dla mnie jest to, że MVVM jest odpowiednia dla WPF i kilku innych techników, którzy przyjmują ten wzorzec, i dlatego należy sprawdzić, czy możliwe jest zastosowanie tego wzoru w innych technologiach. Proszę przeczytać na MVVM na wiki.

+0

Po przejściu wokół modeli widoku w języku C#/MVC jest w zasadzie system MVVM. Są to po prostu konstrukty/wzory. – FlavorScape

1

MVVM był specjalizacją modelu MVP (model-widok-prezenter) i nie jest specjalnie unikalny dla WPF, ale był częścią jego powstania. Wydaje mi się, że próbujesz uzyskać dostęp do MVP, aby ujawnić swój model domeny jako widok w tej domenie.

Jeśli chcesz przykłady w C++, można zobaczyć this PDF. Można jednak dostać sens to z lakonicznym streszczenia w manged C# poniżej:

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

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

Również zastanawiam można użyć abstract object notation do generowania przejezdnych leków generycznych (zobacz modele) ze swojego modelu do swoich widoków. Zasadniczo potrzebujesz funkcji pośredniczącej do oznaczania odpowiednich części w celu serializowania.

0

Nie wiem, jak daleko chcesz wziąć MVVM, ale na poziomie podstawowym pochodzi z Qt i używam go przez długi czas. Masz model biznesowy, na przykład związany z bazą danych. Następnie tworzysz viewmodel specyficzny dla widoku jako model proxy. Możesz ułożyć kilka warstw tych, w zależności od potrzeb. Następnie pokazujesz to za pomocą widoku. Tak długo, jak wszystko jest ustawione prawidłowo, będzie "po prostu działać". Teraz, jeśli chcesz użyć modelu do skonfigurowania widoku, Qt nie zapewnia niczego bezpośrednio dla ciebie. Będziesz musiał napisać klasę fabryczną, która może użyć danych widoku danych do utworzenia instancji i skonfigurowania widoku dla ciebie. Wszystko zależy od tego, jak daleko zajmiesz i jakie korzyści architektoniczne ci to daje.