1. 程式人生 > >Qt的MVC設計模式——InterView框架(MVD)

Qt的MVC設計模式——InterView框架(MVD)

版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。
本文連結:https://blog.csdn.net/weixin_39743893/article/details/80625759
英雄不問,飲水思源~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

http://blog.csdn.net/u011314012/article/details/49799623
http://www.linuxidc.com/Linux/2012-07/66820.htm
http://blog.csdn.net/cutter_point/article/details/43310079
https://blog.csdn.net/yinjiabin/article/details/7947520
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


一,MVC簡介
MVC設計模式是起源於Smalltalk的一種與使用者介面相關的設計模式。
通過使用此模型,可以有效地分離資料和使用者介面。

MVC設計模式包括三個元素:
                                    表示資料的模型                        (Model)
                           表示使用者介面的檢視                   (View)
                           定義了使用者在介面上的操作控制(Controller)

注:MVC是一種設計模式 區別於 三層架構(介面層、邏輯層、資料訪問層)!!!二者是兩碼事!!!!!!
            MVC是設計模式,屬於微觀的解決方案(如『部落格』這一特定應用)。
            三層架構是系統架構,屬於巨集觀的解決方案(如『網路』這一巨大的領域)。
                筆者認為MVC是參考了三層架構的一種具體應用……但也不能簡單地認為MVC就是三層架構
二,Qt的MVC——InterView框架(MVD)

與MVC設計模式類似,Qt引入了模型/檢視結構用於完成資料與介面的分離,即InterView框架。

但不同的是,Qt的InterView框架中把檢視和控制部件結合在一起,使得框架更為簡潔。

為了靈活地處理使用者輸入,InterView框架引入了代理(Delegate)。
通過使用代理,能夠自定義資料條目(item)的顯示和編輯方式。

Qt的模型/檢視結構分為了三種部分:
                                                        模型(Model)、
                                                  檢視(View)、
                                                  代理(Delegate);

其中,模型與資料通訊,併為了其它部件提供介面;
而檢視從模型中獲得用來引用資料條目的模型索引(Model Index);
在檢視中,代理負責繪製資料條目,當編輯條目時,代理和模型直接進行通訊。
模型/檢視/代理之間通過訊號和槽進行通訊。

它們之間的關係如下:
     資料發生改變時,模型發出訊號通知檢視。
     使用者對介面進行操作,檢視發生訊號。
     代理髮出訊號告知模型和檢視編輯器目前的狀態。

三,基本概念
1、模型(Model)
InterView框架中的所有模型都基於抽象基類QAbstractItemModel類,
此類由QProxyModel、QAbstractListModel、QAbstractTableModel、QAbstractProxyModel、QDirModel、QFileSystemModel、QHelpContentModel 和 QStandardItemModel類繼承。


2、檢視(View)
InterView框架中的所有檢視都基於抽象基類QAbstractItemView類,

此類由QColumnView、QHeaderView、QListView、QTableView和QTreeView類繼承。

3、代理(Delegate)
InterView框架中的所有代理都基於抽象基類QAbstractItemDelegate類,
此類由QItemDelegate 和 QStyledItemDelegate類繼承。

————————————————
版權宣告:本文為CSDN博主「FDCFDMin」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/weixin_39743893/art