QT 自定義Model及相關demo

2021-08-15 09:02:46 字數 1607 閱讀 6466

隨著開發專案的不斷增大,業務結構越來越複雜,為了提高程式設計師的開發效率和降低維護成本(**的可讀性),在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 的事件,但...