2012-06-14 28 views
16

Tôi đã cố gắng tìm cách để thực hiện MVVM với PySide nhưng không thể. Tôi nghĩ rằng cần phải có một cách để tạo ra Views từ ViewModels với QItemEditorFactory, và để làm dữ liệu ràng buộc tôi nghĩ rằng tôi có thể sử dụng QDataWidgetMapper.Mẫu MVVM với PySide

Bạn có ý tưởng nào về cách MVVM có thể được triển khai với Qt và PySide không? Thậm chí nếu có một số tài nguyên trong C++ tôi sẽ cố gắng dịch chúng sang python.

Cảm ơn.

+0

Làm cách nào để tôi bỏ lỡ 'QDataWidgetMapper' mà tôi không biết. Tôi đã tự mình thực hiện. Bằng cách nào đó, trong tất cả các thăm dò của tôi về tài liệu và nguồn lực Qt, tôi đã bị mù với nó. Mặc dù người lập bản đồ của tôi hơi khác một chút; nó cho phép một bản đồ một chỉ mục tùy ý đến một widget, không có khái niệm về một hàng/cột hiện tại. –

Trả lời

-2

Câu trả lời rõ ràng cho tôi là MVVM phù hợp với WPF và một số công nghệ khác chào đón mẫu này và vì vậy bạn phải tìm hiểu xem có thể áp dụng mẫu này trên các công nghệ khác hay không. Xin vui lòng, đọc trên MVVM trong wiki.

+0

Khi bạn vượt qua các mô hình xem trong C#/MVC về cơ bản là một hệ thống MVVM. Đây chỉ là các cấu trúc/mẫu. – FlavorScape

1

MVVM là một chuyên môn hóa của mô hình MVP (Model-View-Presenter), và không phải là đặc biệt duy nhất cho WPF, nhưng là một phần của sự ra đời của nó. Tôi nghĩ rằng những gì bạn đang cố gắng để có được là một MVP để lộ mô hình miền của bạn như là một cái nhìn vào tên miền đó.

Nếu bạn muốn ví dụ trong C++, bạn có thể nhìn thấy this PDF. Tuy nhiên, bạn có thể nhận được các ý chính của nó từ một tóm tắt ngắn gọn trong manged C# dưới đây:

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

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

Ngoài ra, tôi đang tự hỏi bạn có thể sử dụng abstract object notation để tạo các generics có thể chuyển qua (mô hình xem) từ mô hình của bạn đến lượt xem của bạn. Về cơ bản, bạn cần một hàm trung gian để gắn cờ các phần liên quan để tuần tự hóa.

0

Tôi không biết bạn muốn dùng MVVM bao xa, nhưng ở cấp độ cơ bản, nó đi kèm với Qt và tôi đã sử dụng nó trong một thời gian dài. Bạn có một mô hình kinh doanh cụ thể, nói gắn với một cơ sở dữ liệu. Sau đó, bạn tạo chế độ xem dạng xem cụ thể dưới dạng mô hình proxy. Bạn có thể xếp chồng lên một vài lớp, tùy thuộc vào những gì bạn cần. Sau đó, bạn cho thấy rằng bằng cách sử dụng một cái nhìn. Miễn là mọi thứ được thiết lập đúng, nó sẽ "chỉ hoạt động". Bây giờ nếu bạn muốn sử dụng một mô hình để cấu hình một khung nhìn, Qt không cung cấp bất cứ điều gì trực tiếp cho bạn. Bạn sẽ cần phải viết một lớp nhà máy có thể sử dụng dữ liệu viewmodel để khởi tạo và thiết lập chế độ xem cho bạn. Tất cả mọi thứ phụ thuộc vào bao xa bạn muốn để có nó, và những lợi ích kiến ​​trúc nào nó cung cấp cho bạn.