類的公共數據有幾種存儲方式,其中一種爲把數據作爲一個類的靜態變量,這樣類的所有對象都可以訪問該數據,並且這個共享的數據只佔有在類的公共空間,不會因爲對象的多少而增加存儲空間。
例如:
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()
{
...
}