在包含大量資料的pc應用程式中,結構化資料的儲存最好交給資料庫。對於只有少量資料的pc應用程式,考慮到將來的擴充套件和**的簡潔,仍然可以使用資料庫的方式,不過在部署和維護階段會比較複雜。
,本文繼承了原來寫的一篇在android應用中使用資料庫的文章,使用了一樣的資料模型,但用qt的資料庫相關類實現。
設計乙個用來儲存lab顏色空間的資料類物件。
h檔案:
#ifndef colorspace_h
#define colorspace_h
#include #include class colorspace
qstring getcolorname()
qstring getl()
qstring geta()
qstring getb()
void setcolorname(qstring colorname)
void setl(qstring l)
void seta(qstring a)
void setb(qstring b)
void setlabint(int l, int a, int b)
};#endif // colorspace_h
cpp檔案:
#include "colorspace.h"
colorspace::colorspace()
colorspace::colorspace(quuid uuid)
這個資料模型用來儲存乙個顏色以及它對應的lab顏色空間的l,a,b通道的值,uuid是儲存資料庫時用到的乙個資料。
乙個應用中會用到多個顏色,那麼需要設計乙個colorspacelab類來管理。
h檔案:
#ifndef colorspacelab_h
#define colorspacelab_h
#include #include #include #include #include #include "colorspace.h"
#include "basehelper.h"
class colorspacelab
;#endif // colorspacelab_h
cpp檔案:
#include "colorspacelab.h"
colorspacelab* colorspacelab::pcolorspacelab = nullptr;
colorspacelab::colorspacelab()
colorspacelab* colorspacelab::get()
return pcolorspacelab;
}void colorspacelab::addcolorspace(colorspace c) //測試通過
}void colorspacelab::deletecolorspacebyuuid(colorspace c) //測試通過
}void colorspacelab::deleteallcolorspace() //測試通過
return listcs;
}colorspace colorspacelab::getcolorspacebyuuid(quuid id) //測試通過
else
return null;
}colorspace colorspacelab::getcolorspacebycolorname(qstring color) //測試通過
if(query.next())
else
}void colorspacelab::updatecolorspacebyuuid(colorspace colorspace) //測試通過
}void colorspacelab::updatecolorspacebyname(colorspace colorspace) //測試通過
}
類的中指向自身的靜態指標變數pcolorspacelab,表明這個類在使用時只被例項化一次,因為乙個應用只需要乙個顏色管理類。
需要說明的是,qmessagebox 彈出的訊息框只能在介面執行緒中實現,如果在qt的main函式對lab類進行操作,訊息可以正常彈出。如果用在其他地方,需要把訊息框換成qdebug方式。
basehelper也是乙個類,該類實現資料庫的連線和表建立等功能。
在顏色管理類colorspacelab中實現的功能有查詢,增加,刪除,按uuid和按顏色名稱更新。
該類用到了一些更加底層的操作basehelper。
h檔案:
#ifndef basehelper_h
#define basehelper_h
#include #include #include #include #include #include class basehelper
;#endif // basehelper_h
cpp檔案:
#include "basehelper.h"
basehelper* basehelper::pbasehelper = nullptr;
basehelper* basehelper::get()
return pbasehelper;
}basehelper::basehelper()
//檢視表是否存在
qsqlquery query(db);
query.exec("select table_name from information_schema.tables where table_name ='colorspace'");
if(query.next())
else
query.exec("select table_name from information_schema.tables where table_name ='template'");
if(query.next())
else
}
basehelper在例項化時進行資料庫的連線和表的建立(如果不存在)。
colorspace* cs = new colorspace();
colorspacelab* pcsl = colorspacelab::get();
qlistlistcs = pcsl->getcolorspaces();
pcsl->deletecolorspacebyuuid(listcs.at(0));
pcsl->addcolorspace(*cs);
colorspace cs1 = listcs.at(0);
colorspace cs2 = listcs.at(1);
cs1.seta("1");
cs1.setb("1");
cs2.seta("200");
cs2.setb("201");
colorspace cs1reture = pcsl->getcolorspacebycolorname(cs1.getcolorname());
pcsl->updatecolorspacebyname(cs2);
5 4 保護設定值資料模型介面
我新換一部智慧型手機後,一般會忍不住將所有設定選單功能體驗一遍,雖然設定層層疊疊,但能將手機設定成自己喜歡的樣子還是頗有成就感的。類同智慧型手機,微機保護等工業產品隨著各種功能的增加,各種各樣的設定也變得繁雜起來。微機保護產品有很多態別的設定值,如遙測越限值,如裝置通訊狀態等,但其中有一類設定值比較...
yii中資料模型的使用
模型是 cmodel 或其子類的例項。模型用於保持資料以及與其相關的業務邏輯。模型是單獨的資料物件。它可以是資料表中的一行,或者乙個使用者輸入的表單。yii資料庫操作使用的是pdo,所以使用yii的時候必須保證你的php.ini中pdo是開啟狀態。乙個資料表對應乙個資料模型,所以有多少張表就對應多少...
Odoo中使用的資料模型
odoo中使用的部分表如下,res users 使用者 res groups 使用者組 角色 res lang 語言 res partner 商 客戶 聯絡人 res font 字型 res company 公司 res bank 銀行 res country 國家 res country stat...