16

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

您对如何使用 Qt 和 PySide 实现 MVVM 有任何想法吗?即使 C++ 中有一些资源,我也会尝试将它们翻译成 python。

谢谢。

4

3 回答 3

1

MVVM 是 MVP(Model-View-Presenter)模式的一种特殊化,并不是 WPF 独有的,而是它最初的一部分。我认为您想要获得的是将您的域模型公开为该域的视图的 MVP。

如果您想要 c++ 中的示例,可以查看此 PDF。但是,您可以从下面的 manged c# 中的简短概要中获得它的要点:

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

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

另外,我想知道您可以使用抽象对象表示法 来制作从模型到视图的可传递泛型(视图模型)。基本上,您需要一个中间函数来标记要序列化的相关部分。

于 2013-09-04T23:53:43.857 回答
0

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

于 2013-09-08T08:33:54.537 回答
-2

对我来说,一个明显的答案是 MVVM 适用于 WPF 和其他一些欢迎这种模式的技术,因此您必须找出是否可以将这种模式应用于其他技术。请阅读 wiki 中的 MVVM。

于 2013-06-21T03:38:31.463 回答