Estoy escribiendo código de prueba que iterará automáticamente a través de todos los Q_PROPERTY de widgets y algunas propiedades están usando tipos que están registrados a través de qRegisterMetaType. Si quiero leer/escribir estos en QVariant, necesito usar QVariant :: UserType al almacenarlos en variante. Hasta aquí todo bien.Cómo verificar QVariant de tipo QVariant :: UserType es el tipo esperado?
Pero cuando quiero probar lecturas y escrituras de estas propiedades, también necesito saber su tipo. Para cosas que ya son tipos de qt estándar, puedo hacerlo a través de QVariant :: type() pero como tengo muchos tipos de uso, ¿cómo se lograría esto?
de la API de QVariant, manchado este:
bool QVariant::canConvert (Type t) const
Pero estoy un poco dudoso que esto dará lugar a tipos incorrectos en el caso de las enumeraciones?
Entonces, ¿cuál sería la forma infalible de verificar qué tipo de tipo de usuario se almacena en QVariant?
Sin embargo , parece que en el caso de QVarian t :: UserType variant, typeName() devuelve "UserType" y typeName() devuelve QVariant :: UserType enum value. Entonces, ambos son inútiles. – rasjani
Los tiempos de los objetos están bien, puedo hacer la verificación también con el encasillado de modo que su ejemplo también funcione de forma adecuada. Pero mi pregunta era sobre enum, que no es un tipo de clase y se puede convertir de manera reproducible cualquier variable numérica en una enumeración. Pero como dije. Verificare tu código. – rasjani
Ah, lo siento, no me di cuenta de esa parte. Intenté y parece que es posible registrar un tipo de enumeración con Q_DECLARE_METATYPE o qRegisterMetaType y usarlo de la misma manera. Los documentos solo hablan de clase o estructura con el constructor predeterminado público, el constructor de copia y el destructor, por lo que no estoy del todo seguro, pero creo que debería funcionar para cualquier tipo que tenga la misma interfaz implícita para creación, copia y destrucción. – Leiaz