我的问题是:
How to verify QVariant of type QVariant::UserType is expected type?
具体地说,如果
struct MyType {
....
};
Q_DECLARE_METATYPE(MyType);
QVariant v(QVariant::fromValue(MyType());有没有办法知道v.userType()在编译时会返回什么?
发布于 2012-07-26 16:46:26
没有办法在编译时发现这一点,因为它直到运行时才能确定。你可以用qMetaTypeId<MyType>()获取它。
发布于 2012-07-25 21:53:36
根据我所做的尝试,您声明的userType()的索引将从256开始,然后递增1。
因此,如果您使用Q_DECLARE_METATYPE(someType);,则此类型将在userType()调用中返回256。如果您随后执行Q_DECLARE_METATYPE(someOtherType);,它将返回257,依此类推。
此外,如果您需要在运行时检查它,您可以获取该值一次,然后使用它进行比较:
int MyTypeID = QVariant::fromValue(MyType()).userType();
if( someObject.userType == MyTypeID )
{
//do stuff
}您可能还想看看qRegisterMetaType()函数。
https://stackoverflow.com/questions/11650460
复制相似问题