Par défaut, l’objet QVariant de Qt ne peut contenir que des types simples (int, short, …) et des types Qt de base (QString, …). Mais il est possible d’étendre ce comportement à des objects C++ spécifiques.
En vrac :
- Ajouter en haut du fichier source (.cpp) où l’on a besoin d’ajouter un type spécifique dans un QVariant, ou de retrouver ce type à partie d’un QVariant:
Q_DECLARE_METATYPE(MyType);
- Apparemment, on peut aussi utiliser le code suivant, mais là ça devient flou pour moi:
int myTypeId = qRegisterMetaType
("MyType") - Ensuite, pour ajouter la donnée dans le QVariant:
MyType myData...;
// ...
QVariant myVariant= QVariant::fromValue(myData); - Et pour la lire :
// Le cast en (MyType) n'a pas l'air obligatoire
MyType myRetrievedData = (MyType) myVariant.value();
That’s all folks!