<QTypeInfo>
Macros permettant de spécifier des informations sur les types personnalisés. Plus d'informations...
| Header: | #include <QTypeInfo> |
Macros
| Q_DECLARE_TYPEINFO(Type, Flags) |
Documentation des macros
Q_DECLARE_TYPEINFO(Type, Flags)
Vous pouvez utiliser cette macro pour spécifier des informations sur un type personnalisé Type. Avec des informations précises sur le type, les conteneurs génériques de Qt peuvent choisir les méthodes de stockage et les algorithmes appropriés.
Flags peut être l'un des éléments suivants :
Q_PRIMITIVE_TYPEspécifie que Type ne nécessite aucune opération pour être correctement détruit, et qu'il est possible d'utiliser memcpy() pour créer une copie indépendante valide d'un objet.Q_RELOCATABLE_TYPEspécifie que Type a un constructeur et/ou un destructeur, mais qu'il peut toujours être relocalisé en mémoire en utilisantmemcpy().Q_MOVABLE_TYPEest identique àQ_RELOCATABLE_TYPE. Il est préférable d'utiliserQ_RELOCATABLE_TYPEdans le nouveau code. Note : malgré le nom, cela n'a rien à voir avec les constructeurs de déplacement ou la sémantique de déplacement du C++.Q_COMPLEX_TYPE(par défaut) spécifie que Type a des constructeurs et/ou un destructeur et qu'il ne peut pas être déplacé en mémoire.
Exemple de type "primitif" :
struct Point3D { int x; int y; int z; }; Q_DECLARE_TYPEINFO(Point3D, Q_PRIMITIVE_TYPE);
Un exemple de type "primitif" non POD est QUuid: Même si QUuid a des constructeurs (et n'est donc pas POD), chaque motif de bit représente toujours un objet valide, et memcpy() peut être utilisé pour créer une copie indépendante valide d'un objet QUuid.
Exemple de type relocalisable :
class Point2D { public: Point2D() { data = new int[2]; } Point2D(const Point2D &other) { /*...*/ } ~Point2D() { delete[] data; } Point2D &operator=(const Point2D &other) { /*...*/ } int x() const { return data[0]; } int y() const { return data[1]; } private: int *data; }; Q_DECLARE_TYPEINFO(Point2D, Q_RELOCATABLE_TYPE);
Qt essaiera de détecter la classe d'un type en utilisant les traits de type standard du C++ ; utilisez cette macro pour ajuster le comportement. Par exemple, de nombreux types seraient candidats à Q_RELOCATABLE_TYPE bien qu'ils ne soient pas trivialement copiables.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.