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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值