我正在尝试使用Qt反射将枚举转换为QString。
这是代码的一部分:
class ModelApple
{
Q_GADGET
Q_ENUMS(AppleType)
public:
enum AppleType {
Big,
Small
}
}
这是我想要做的:
convertEnumToQString(ModelApple::Big)
返回
"Big"
这可能吗?
如果您对
convertEnumToQString
有任何想法,请分享 最佳答案
您需要使用Q_ENUM宏,该宏在元对象系统中注册一个枚举类型。
enum AppleType {
Big,
Small
};
Q_ENUM(AppleType)
现在,您可以使用QMetaEnum类访问有关枚举器的元数据。
QMetaEnum metaEnum = QMetaEnum::fromType<ModelApple::AppleType>();
qDebug() << metaEnum.valueToKey(ModelApple::Big);
这是此实用程序的通用模板:
template<typename QEnum>
std::string QtEnumToString (const QEnum value)
{
return std::string(QMetaEnum::fromType<QEnum>().valueToKey(value));
}