Python 带有PySide的MVVM模式

Python 带有PySide的MVVM模式,python,qt,mvvm,pyside,architectural-patterns,Python,Qt,Mvvm,Pyside,Architectural Patterns,我一直在尝试用PySide实现MVVM,但一直未能实现。我认为应该有一种方法可以使用QItemEditorFactory从ViewModels创建视图,并且可以使用QDataWidgetMapper进行数据绑定 你对如何用Qt和PySide实现MVVM有什么想法吗?即使C++中有一些资源,我也会尝试把它们翻译成Python。 谢谢。对我来说,一个显而易见的答案是MVVM适用于WPF和其他一些欢迎此模式的技术,因此您必须了解是否有可能将此模式应用于其他技术。请阅读wiki中的MVVM。MVVM是M

我一直在尝试用PySide实现MVVM,但一直未能实现。我认为应该有一种方法可以使用QItemEditorFactory从ViewModels创建视图,并且可以使用QDataWidgetMapper进行数据绑定

你对如何用Qt和PySide实现MVVM有什么想法吗?即使C++中有一些资源,我也会尝试把它们翻译成Python。
谢谢。

对我来说,一个显而易见的答案是MVVM适用于WPF和其他一些欢迎此模式的技术,因此您必须了解是否有可能将此模式应用于其他技术。请阅读wiki中的MVVM。

MVVM是MVP(模型视图演示者)模式的一种专门化,并不是WPF独有的,而是其最初的一部分。我认为您试图获得的是一个MVP,将您的域模型作为视图公开到该域中

如果你想要C++中的例子,你可以看到,你可以从下面的一个简洁的概要中得到它的要点:

公共类域视图:IDomainView
{
私有IDomainPresenter domainPresenter=null;
///建造师
公共域视图()
{
domainPresenter=新的ConcreteDomainPresenter(此);
}
}

另外,我想知道您是否可以使用从模型到视图的可通过泛型(视图模型)。基本上,您需要一个中介函数来标记要序列化的相关部分

我不知道你想让MVVM走多远,但基本上它是由Qt提供的,我已经用了很长时间了。您有一个特定于业务的模型,比如绑定到数据库。然后创建视图特定的viewmodel作为代理模型。根据需要,您可以堆叠其中的几层。然后使用一个视图来显示它。只要一切设置正确,它就会“正常工作”。现在,如果您想使用模型来配置视图,Qt不会直接为您提供任何东西。您需要编写一个factory类,该类可以使用viewmodel数据为您实例化和设置视图。一切都取决于你想走多远,以及它给你带来了什么架构上的好处。

我到底是如何错过了
QDataWidgetMapper
我不知道。最后我自己实现了一个。不知何故,在我对Qt文档和源代码的所有探索中,我一直对它视而不见。虽然我的制图器有点不同;它可以将任意索引映射到一个小部件,没有当前行/列的概念。这些只是构造/模式。
public class DomainView : IDomainView
{
    private IDomainPresenter domainPresenter = null;

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