为了将C ++中的枚举转换为QString,可以执行以下操作:
template<typename QEnum>
static QString QtEnumToString (const QEnum value)
{
QString valueString = QVariant::fromValue(value).toString();
return valueString;
}
这将为声明为以下内容的枚举生成QString:
enum class Type{Text, Html, Image, URL};
Q_ENUM(Type)
Q_DECLARE_METATYPE(ClipboardItem::Type) // this goes outside the class
例如,输出:
qDebug() << ClipboardItem::QtEnumToString(Type::Html);
是“ HTML”。 现在我想进行反向操作,但找不到办法。我尝试过的是这样:
static QVariant::Type QStringToQtEnum (const char *name)
{
return QVariant::nameToType(name);
}
但是,如果我尝试运行QStringToQtEnum("Type::Html")
,则输出始终为QVariant::Invalid
。