1. 程式人生 > >【Qt】以QMap作為自定義類的靜態資料

【Qt】以QMap作為自定義類的靜態資料

類的公共資料有幾種儲存方式,其中一種為把資料作為一個類的靜態變數,這樣類的所有物件都可以訪問該資料,並且這個共享的資料只佔有在類的公共空間,不會因為物件的多少而增加儲存空間。

例如:

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()
{
    ...
}