版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接和本聲明。
本文連接:https://blog.csdn.net/weixin_39743893/article/details/80625759
英雄不問,飲水思源~~~~~~~~~~~~~~~~~~~~~~~~~~~~~linux
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框架中把視圖和控制部件結合在一塊兒,使得框架更爲簡潔。.net
爲了靈活地處理用戶輸入,InterView框架引入了代理(Delegate)。
經過使用代理,可以自定義數據條目(item)的顯示和編輯方式。設計
Qt的模型/視圖結構分爲了三種部分:
模型(Model)、
視圖(View)、
代理(Delegate);代理
其中,模型與數據通訊,併爲了其它部件提供接口;
而視圖從模型中得到用來引用數據條目的模型索引(Model Index);
在視圖中,代理負責繪製數據條目,當編輯條目時,代理和模型直接進行通訊。
模型/視圖/代理之間經過信號和槽進行通訊。htm
它們之間的關係以下:
數據發生改變時,模型發出信號通知視圖。
用戶對界面進行操做,視圖發生信號。
代理髮出信號告知模型和視圖編輯器目前的狀態。
三,基本概念
一、模型(Model)
InterView框架中的全部模型都基於抽象基類QAbstractItemModel類,
此類由QProxyModel、QAbstractListModel、QAbstractTableModel、QAbstractProxyModel、QDirModel、QFileSystemModel、QHelpContentModel 和 QStandardItemModel類繼承。
二、視圖(View)
InterView框架中的全部視圖都基於抽象基類QAbstractItemView類,
此類由QColumnView、QHeaderView、QListView、QTableView和QTreeView類繼承。
三、代理(Delegate)
InterView框架中的全部代理都基於抽象基類QAbstractItemDelegate類,
此類由QItemDelegate 和 QStyledItemDelegate類繼承。
———————————————— 版權聲明:本文爲CSDN博主「FDCFDMin」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。 原文連接:https://blog.csdn.net/weixin_39743893/article/details/80625759