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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章