【Qt】以QMap作為自定義類的靜態資料
阿新 • • 發佈:2018-12-17
類的公共資料有幾種儲存方式,其中一種為把資料作為一個類的靜態變數,這樣類的所有物件都可以訪問該資料,並且這個共享的資料只佔有在類的公共空間,不會因為物件的多少而增加儲存空間。
例如:
sutudent.h
class Student
{
public:
static Qstring classStr;
Studen();
...
}
sutudent.cpp
QString Student::classStr = "三年一班";
...
這樣就定義好了,之後就可以用Student::classStr來訪問該字串。
那麼如果是個容器QMap該如何定義呢?
靜態變數只能用靜態函式去賦值,請看下例:
PItemInfo.h
class PItemInfo
{
public:
static QMap<QString,QColor> colorMap;
static QMap<QString,QColor> initColorMap();
PItemInfo();
}
PItemInfo.cpp
#include "PItemInfo.h" QMap<QString,QColor> PItemInfo::colorMap = PItemInfo::initColorMap(); QMap<QString, QColor> PItemInfo::initColorMap() { QMap<QString, QColor> map; map.insert("黑",QColor(Qt::black)); map.insert("灰",QColor(Qt::gray)); map.insert("深灰",QColor(Qt::darkGray)); map.insert("淺灰",QColor(Qt::lightGray)); map.insert("紅",QColor(Qt::red)); map.insert("黃",QColor(Qt::yellow)); map.insert("藍",QColor(Qt::blue)); map.insert("綠",QColor(Qt::green)); map.insert("透明",QColor(Qt::transparent)); return map; } PItemInfo::PItemInfo() { ... }