用户定义类型:。 QVariant:userType()。 它的工作如QVariant: 类型,但回归定义的用户类型分类,而QVariant:类型()总是返回QVariant:UserType。
http://doc.qt.io/qt-5/qvariant.html QVariant: 类型Name(),将类型名称作为示意图。
EDIT:
这很可能取决于你如何确定QVariant。 直接使用 QVariant:QVariant(int category, const void *拷贝)。
我有三类:
class MyFirstType
{
public:
MyFirstType();
MyFirstType(const MyFirstType &other);
~MyFirstType();
MyFirstType(const QString &content);
QString content() const;
private:
QString m_content;
};
Q_DECLARE_METATYPE(MyFirstType);
第三个没有Q_DECLARE_METATYPE
I 储存在QVariant:
QString content = "Test";
MyFirstType first(content);
MySecondType second(content);
MyThirdType third(content);
QVariant firstVariant;
firstVariant.setValue(first);
QVariant secondVariant = QVariant::fromValue(second);
int myType = qRegisterMetaType<MyThirdType>("MyThirdType");
QVariant thirdVariant(myType, &third); // Here the type isn t checked against the data passed
qDebug() << "typeName for first :" << firstVariant.typeName();
qDebug() << "UserType :" << firstVariant.userType();
qDebug() << "Type : " << firstVariant.type();
[...]
我收到:
typeName for first : MyFirstType
UserType : 256
Type : QVariant::UserType
typeName for second : MySecondType
UserType : 257
Type : QVariant::UserType
typeName for third : MyThirdType
UserType : 258
Type : QVariant::UserType