No 58 60 自定義模型類

2021-08-17 02:41:15 字數 2394 閱讀 9319

qstandarditemmodel是乙個通用的模型類:

1、能夠以任意的方式組織資料(線性、非線性);

2、資料組織的基本單位為資料項(qstandarditem);

3、每乙個資料項能夠儲存多個資料狀態(附加資料角色);

4、每乙個資料項能夠對資料狀態進行控制(可編輯,可選。。。)。

組織結構如下:

新型別引入:qvariant

1qvariant 是乙個用於封裝的型別;

2、qvariant 能夠表示大多數常見的值型別;

3、qvariant 每次只能封裝(儲存)單一型別的值;

4、qvariant 意義在於能夠設計「返回型別可變的函式」。

應用例項如下:

int main(int argc, char *argv)

執行結果:

注:在對qvariant型別的資料進行操作時,應首先檢查其是否可用。(isvalid()函式)

1、解析資料來源中的資料(資料庫,網路,串列埠,等);

2、將解析後的資料存入qstandarditem物件中;

3、根據資料間的關係在qstandarditemmodel物件中組織資料項;

4、選擇合適的檢視顯示資料項。

例項分析:

分析思路如下:

系統架構圖:

工程中常用的資料應用架構分為4層:

資料層,資料表示層,資料組織層,資料顯示層。

系統核心類圖:

具體實現:

將每個功能層做成乙個相對應的類,從而根據具體類實現相應的功能。

1、datasource類的設計與實現:

設定資料來源並讀取資料;對資料進行解析後生成資料物件。

.h檔案如下:

#include #include #include "scoreinfo.h"

class datasource : public qobject

;

2、scoreinfo類的設計與實現:

封裝資料源中的一組完整資料;提供返回具體資料值的介面函式。

.h檔案如下:

#include #include class scoreinfo : public qobject

;

3、scoreinfomodel類的設計與實現:

使用標準模型類qstandarditemmodel作為成員;以scoreinfo類物件為最小單位進行資料組織。

.h檔案如下:

#include #include #include #include "scoreinfo.h"

class scoreinfomodel : public qobject

;

問題1:為什麼datascoure類中獲取資料的方式是fetchdata,而不是getdata?

答:我們來看fetchdata()的具體實現:

qlistdatasource::fetchdata()  

函式實現過程中,對取到的資料進行複製,並且將取到的資料刪除,避免了資料的冗餘。

問題2:這樣架構乙個資料應用程式有什麼好處?

答:當資料來源或者檢視需要發生變化的時候,可以最小程度的減少**改動,將改動可以具體到每一次。

自定義使用者模型類 遷移使用者模型類

django.contrib.auth1.包含認證框架的核心和預設的模型。django認證系統包含的內容 使用者 使用者模型類 使用者認證。許可權 標識乙個使用者是否可以做乙個特定的任務,mis系統常用到。組 對多個具有相同許可權的使用者進行統一管理,mis系統常用到。密碼 乙個可配置的密碼雜湊系統...

自定義網路模型

看看python 函式 self kwargs.比如4.4的centerlayer沒引數,別的有引數,那麼函式定義裡面哪個指的是傳入的tensor 好像懂了,通過4.4.2,自定義帶引數的層,利用parameterdict定義所需引數,forward函式的引數列表就是傳入的地方 更新 我感覺init...

PyTorch 自定義層(區別於自定義模型)

博主在學習三值神經網路時,使用了lenet 5模型,程式設計 需要對lenet 5模型中的卷積層與全連線層進行自定義,搜尋他人方法後,博主產生了乙個疑問,絕大多數提供的自定義層方法都是繼承nn.module模型,而這方法據說是官方提供 官網 pytorch 自定義線性層 如下 class linea...