类的公共数据有几种存储方式,其中一种为把数据作为一个类的静态变量,这样类的所有对象都可以访问该数据,并且这个共享的数据只占有在类的公共空间,不会因为对象的多少而增加存储空间。
例如:
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()
{
...
}