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

How do I retrieve the value as my enum type from a QMap?

我有一个 QMap 这样的:

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

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

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

我该如何解决这个问题?

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

Q_ENUM(KeywordType)
Q_DECLARE_METATYPE(keywords::KeywordType)

 qRegisterMetaType<KeywordType>("KeywordType");

了解输入的内容:

typedef keywords::KeywordType KeywordType;

也许你应该通过 keywords::name 获得 name 值?如果 KeywordType 是枚举,则它不是命名空间或 class.

我没有找到为什么这不适用于我的枚举,所以我决定这样做:

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