如何使用QVariant将枚举转换为QString

时间:2019-08-25 12:46:42

标签: c++ qt enums qstring

为了将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

0 个答案:

没有答案