Etendre les types gérés par un QVariant

Publié dans C / C++ | Marqué avec ,
Share

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!

Inspiration pour comprendre mieux QVariant

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*