我正在编写测试代码,它将自动遍历所有Q_PROPERTY的小部件,并且一些属性正在使用通过qRegisterMetaType注册的类型 . 如果我想将它们读/写到QVariant中,我需要在将它们存储到变体中时使用QVariant :: UserType . 到现在为止还挺好 .
但是当我想测试这些属性的读写时,我还需要知道它们的类型 . 对于已经是标准qt类型的东西,我可以通过QVariant :: type()来做到这一点,但由于我有很多usertypes,这将如何实现?
从QVariant的api,我发现了这个:
bool QVariant::canConvert ( Type t ) const
但我有点怀疑这是否会导致错误类型的枚举?
那么,验证QVariant中存储哪种类型的usertype是多么简单的方法呢?
1 回答
对于用户定义的类型,有QVariant::userType() . 它的工作方式类似于QVariant :: type(),但返回用户定义类型的类型id整数,而QVariant :: type()始终返回QVariant :: UserType .
还有QVariant::typeName(),它将类型的名称作为字符串返回 .
编辑:
这可能取决于您如何设置QVariant . 不鼓励直接使用QVariant::QVariant(int type, const void * copy) .
说我有三种类型:
第三个没有Q_DECLARE_METATYPE
我将它们存储在QVariant中:
我明白了: