python qt mvvm pyside architectural-patterns

python - Patrón MVVM con PySide



qt architectural-patterns (3)

He estado tratando de encontrar una manera de implementar MVVM con PySide, pero no he podido. Creo que debería haber una manera de crear Vistas desde ViewModels con QItemEditorFactory, y hacer un enlace de datos, creo que puedo usar QDataWidgetMapper.

¿Tiene alguna idea sobre cómo se puede implementar MVVM con Qt y PySide? Incluso si hay algunos recursos en C ++, intentaré traducirlos a Python.

Gracias.


MVVM fue una especialización del patrón MVP (Model-View-Presenter), y no es específicamente exclusivo de WPF, pero fue parte de su inicio. Creo que lo que intentas obtener es un MVP para exponer tu modelo de dominio como una vista de ese dominio.

Si quieres ejemplos en c ++, puedes ver este PDF. Sin embargo, puede obtener la esencia de esto a partir de una sinopsis concisa en el código C # a continuación:

public class DomainView : IDomainView { private IDomainPresenter domainPresenter = null; ///<summary>Constructor</summary> public DomainView() { domainPresenter = new ConcreteDomainPresenter(this); } }

Además, me pregunto si podría usar la notación de objeto abstracto para hacer genéricos pasables (modelos de vista) desde su modelo a sus vistas. Básicamente, necesitaría una función intermedia para marcar las partes relevantes para serializar.


No sé qué tan lejos quieres llevar MVVM, pero a un nivel básico viene con Qt, y lo he estado usando durante mucho tiempo. Tienes un modelo específico de negocio, por ejemplo, vinculado a una base de datos. A continuación, creará un modelo de vista específico como modelo de proxy. Puedes apilar algunas capas de ellas, dependiendo de lo que necesites. Entonces lo demuestras utilizando una vista. Mientras todo esté bien configurado, "simplemente funcionará". Ahora, si desea usar un modelo para configurar una vista, Qt no le proporciona nada directamente. Necesitará escribir una clase de fábrica que pueda usar los datos de viewmodel para crear una instancia y configurar la vista para usted. Todo depende de lo lejos que quiera llevarlo y de los beneficios arquitectónicos que le ofrece.


Una respuesta obvia para mí es que MVVM es adecuado para WPF y algunos otros técnicos que aceptan este patrón, por lo que debe averiguar si es posible aplicar este patrón en otras tecnologías. Por favor, lea en MVVM en wiki.