2012-06-14 14 views
16

Ho cercato di trovare un modo per implementare MVVM con PySide ma non sono stato in grado di farlo. Penso che ci dovrebbe essere un modo per creare Views da ViewModels con QItemEditorFactory, e per fare il binding dei dati penso di poter usare QDataWidgetMapper.Pattern MVVM con PySide

Avete qualche idea su come MVVM può essere implementato con Qt e PySide? Anche se ci sono alcune risorse in C++ proverò a tradurle in python.

Grazie.

+0

Come diavolo ho perso 'QDataWidgetMapper' Non lo so. Ho finito per implementarne uno io stesso. In qualche modo, in tutta la mia esplorazione della documentazione e delle fonti di Qt, sono rimasto cieco. Anche se il mio mapper è un po 'diverso; consente di mappare un indice arbitrario su un widget, non esiste la nozione di una riga/colonna corrente. –

risposta

-2

Una risposta ovvia per me è che MVVM è adatto per WPF e alcuni altri tecnici che accolgono questo modello e quindi è necessario scoprire se è possibile applicare questo modello su altre tecnologie. Per favore, leggi su MVVM in wiki.

+0

Quando si passa in rassegna i modelli di vista in C#/MVC è fondamentalmente un sistema MVVM. Questi sono solo costrutti/modelli. – FlavorScape

1

MVVM era una specializzazione del pattern MVP (Model-View-Presenter) e non è specificamente univoco per WPF, ma era parte del suo inizio. Penso che quello che stai cercando di ottenere è un MVP per esporre il tuo modello di dominio come una vista in quel dominio.

Se volete esempi in C++, si può vedere this PDF. Tuttavia, è possibile ottenere l'essenza di esso da una sinossi concisa in manged C# di seguito:

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

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

Inoltre, mi chiedo è possibile utilizzare il abstract object notation per generare generici passabili (visualizza modelli) dal modello alle viste. Fondamentalmente, avresti bisogno di una funzione intermediario per contrassegnare le parti rilevanti da serializzare.

0

Non so fino a che punto si desidera prendere MVVM, ma a livello base viene fornito con Qt e lo uso da molto tempo. Hai un modello aziendale specifico, ad esempio legato a un database. Quindi crei viewmodel specifico della vista come modello proxy. Puoi impilare alcuni strati di questi, a seconda di cosa ti serve. Quindi mostri che usare una vista. Finché tutto è impostato correttamente, funzionerà ". Ora se vuoi usare un modello per configurare una vista, Qt non fornisce nulla direttamente per te. Dovresti scrivere una classe factory in grado di utilizzare i dati viewmodel per creare un'istanza e impostare la vista per te. Tutto dipende da quanto lontano vuoi prenderlo e quali vantaggi architettonici ti offre.