如何使用QVariant将枚举转换为QString < >为了将C++中的枚举转换成qSnk,可以执行以下操作: template<typename QEnum> static QString QtEnumToString (const QEnum value) { QString valueString = QVariant::fromValue(value).toString(); return valueString; }
例如,输出:如何使用QVariant将枚举转换为QString < >为了将C++中的枚举转换成qSnk,可以执行以下操作: template<typename QEnum> static QString QtEnumToString (const QEnum value) { QString valueString = QVariant::fromValue(value).toString(); return valueString; },c++,qt,enums,qstring,C++,Qt,Enums,Qstring,例如,输出: qDebug() << ClipboardItem::QtEnumToString(Type::Html); 但是,如果我尝试运行QStringToQtEnum(“Type::Html”)输出总是QVariant::Invalid QMetaEnum::fromType().valueToKey(“Html”)请注意,编译器并不严格要求将枚举的名称嵌入到可执行文件中。在某些平台上(当然,只有在更高版本中),带有“a”和“b”定义的“enumType”类型的枚举
qDebug() << ClipboardItem::QtEnumToString(Type::Html);
但是,如果我尝试运行QStringToQtEnum(“Type::Html”)
输出总是QVariant::Invalid
QMetaEnum::fromType().valueToKey(“Html”)
请注意,编译器并不严格要求将枚举的名称嵌入到可执行文件中。在某些平台上(当然,只有在更高版本中),带有“a”和“b”定义的“enumType”类型的枚举可以打印为“enumType”和“enumType”,而不是“enumType::a”。上次使用MSVC2015在UWP上进行测试和观察。QMetaEnum::fromType().valueToKey(“Html”)
请注意,编译器并不严格要求将枚举的名称嵌入到可执行文件中。在某些平台上(当然,只有在更高版本中),带有“a”和“b”定义的“enumType”类型的枚举可以打印为“enumType”和“enumType”,而不是“enumType::a”。最后使用MSVC2015在UWP上测试和观察。
qDebug() << ClipboardItem::QtEnumToString(Type::Html);
static QVariant::Type QStringToQtEnum (const char *name)
{
return QVariant::nameToType(name);
}