隨著開發專案的不斷增大,業務結構越來越複雜,為了提高程式設計師的開發效率和降低維護成本(**的可讀性),在qt中使用mvc(mvd)模式是行之有效的方法。而自定義model則是使用mvc模式的第一步。
qt給我們預定義了許多model,view和delegate,也就是說我們可以很方便快速的繼承相應的類完成開發。我們只需要遵循相關的規範,實現一些特定的方法便可以完成自定義model類。
新建乙個c++類,生成標頭檔案和cpp檔案
在標頭檔案類定義中繼承qabstracttablemodel類,並且重寫以下函式
virtual int rowcount(const qmodelindex &parent) const;
virtual int columncount(const qmodelindex &parent) const;
qvariant data(const qmodelindex &index, int role) const;
qvariant headerdata(int section, qt::orientation orientation, int role) const;
在標頭檔案中定義自己需要的資料型別
在cpp檔案中初始化自己的資料型別,並且實現以上方法,參考下面的**
header:
#ifndef modelex_h
#define modelex_h
#include
#include
#include
#include
class modelex :public qabstracttablemodel
;#endif // modelex_h
cpp:
#include "modelex.h"
#include
modelex::modelex()
void modelex::populatemodel()
//返回模型的列數
int modelex::columncount(const qmodelindex &parent) const
int modelex::rowcount(const qmodelindex &parent) const
//返回指定索引的資料,即將數值對映為文字
qvariant modelex::data(const qmodelindex &index, int role) const
if(role==qt::displayrole)
}return qvariant();
}qvariant modelex::headerdata(int section, qt::orientation orientation, int role) const
測試:
#include "qmodeldialog.h"
#include
#include "modelex.h"
int main(int argc, char *argv)
qt5開發及例項,第三版 ,電子工業出版社——陸文同
匯入自定義模組model
編寫m2.py,指令碼內容如下 usr bin python coding utf 8 its a module test author mm import sys 定義函式ft defft x x int x sum x 3 print sum ft sys.argv 1 直接執行指令碼 m2.p...
QT內省機制 自定義Model 資料庫
本文將介紹自定義model過程中資料庫資料來源的獲取方法,我使用過以下三種方式獲取資料庫資料來源 本文重點介紹第二種,即利用qt的內省機制來獲取資料。1.自定義model過程 通過內省功能獲得字段值,也就是第二種方法 本文中自定義model繼承於qabstracttablemodel 重點描述set...
自定義元件中的model
handlechange 很好奇沒有找到父元件中定義的change,並且發現自定義元件中有乙個 export default 下面的prop不碼了搜尋了vue 文件才發現是為了避免衝突才這樣設定的 乙個元件上的 v model 缺省會利用名為 value 的 prop 和名為 input 的事件,但...