什麼是MVC
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。 ------摘自百度百科
樓主簡單的理解就是M是數據模型,V是用戶可見的視圖,C是響應用戶操作的控制器。
Qt圖形視圖框架與MVC
Qt圖形視圖框架就是採用MVC的設計思想:
QGraphicsView負責顯示,屬於V; QGraphicsScene以及QGraphicsItem存儲場景以及圖形項的數據,屬於M;由於QGraphicsView的祖先是QWidget,QWidget自身可以響應鼠標、鍵盤等用戶操作,所以在Qt中QGraphicsView同時負責響應用戶操作,屬於C。 打個比喻:QGraphicsViews是電影院中的幕布,QGraphicsScene是膠捲,QGraphicsItem是膠捲中的一個個人物(或者動物等等)。
代碼示例
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsSimpleTextItem>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
//QGraphicsView用於顯示用戶界面
QGraphicsView view; //--->V && C
//QGraphicsScene 提供場景數據
QGraphicsScene scene; //--->M
//給視圖添加場景
view.setScene(&scene);
//QGraphicsSimpleTextItem(繼承自QGraphicsSimpleItem) 提供圖元數據
QGraphicsSimpleTextItem simpleTextItem("Hello Qt MVC!"); //--->M
simpleTextItem.setPen(QPen(Qt::red));
//給場景添加圖元
scene.addItem(&simpleTextItem);
simpleTextItem.setPos(100,100);
view.show();
return app.exec();
}