如何从QMap中检索值作为我的枚举类型?

时间:2015-10-18 20:43:13

标签: c++ qt enums qmap

我有QMap这样:

QVariantMap dictionary;
dictionary.insert("name", KeywordType::name);

但是当我尝试将name键的值检索为枚举KeywordType类型,即KeywordType::name时,它返回none(KeywordType枚举中为零):

  qDebug() << dictionary["name"].value<KeywordType>();

我该如何解决这个问题?

枚举类型已注册到moc,它使用:

Q_ENUM(KeywordType)
Q_DECLARE_METATYPE(keywords::KeywordType)

 qRegisterMetaType<KeywordType>("KeywordType");

要知道有类型的:

typedef keywords::KeywordType KeywordType;

2 个答案:

答案 0 :(得分:0)

也许您应该name获得keywords::name价值?如果KeywordType是枚举,则它不是命名空间或类。

答案 1 :(得分:0)

我没有找到为什么这不能用我的枚举,所以我不得不这样做:

static_cast<KeywordType>(dictionary["name"].value<int>())