<QTypeInfo>
Macros para especificar información sobre tipos personalizados. Más...
| Header: | #include <QTypeInfo> |
Macros
| Q_DECLARE_TYPEINFO(Type, Flags) |
Documentación de macros
Q_DECLARE_TYPEINFO(Type, Flags)
Puede utilizar esta macro para especificar información sobre un tipo personalizado Type. Con información precisa sobre el tipo, los contenedores genéricos de Qt pueden elegir métodos de almacenamiento y algoritmos apropiados.
Flags puede ser uno de los siguientes:
Q_PRIMITIVE_TYPEespecifica que Type no requiere ninguna operación para ser destruido correctamente, y que es posible utilizar memcpy() para crear una copia independiente válida de un objeto.Q_RELOCATABLE_TYPEespecifica que Type tiene un constructor y/o un destructor, pero que puede ser reubicado en memoria utilizandomemcpy().Q_MOVABLE_TYPEes lo mismo queQ_RELOCATABLE_TYPE. Es preferible utilizarQ_RELOCATABLE_TYPEen código nuevo. Nota: a pesar del nombre, esto no tiene nada que ver con los constructores move o la semántica move de C++.Q_COMPLEX_TYPE(por defecto) especifica que Type tiene constructores y/o un destructor y que no puede ser movido en memoria.
Ejemplo de un tipo "primitivo":
struct Point3D { int x; int y; int z; }; Q_DECLARE_TYPEINFO(Point3D, Q_PRIMITIVE_TYPE);
Un ejemplo de un tipo "primitivo" no-POD es QUuid: Aunque QUuid tiene constructores (y por tanto no es POD), cada patrón de bits sigue representando un objeto válido, y memcpy() puede utilizarse para crear una copia independiente válida de un objeto QUuid.
Ejemplo de un tipo reubicable:
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 intentará detectar la clase de un tipo utilizando los rasgos de tipo estándar de C++; utilice esta macro para ajustar el comportamiento. Por ejemplo, muchos tipos serían candidatos para Q_RELOCATABLE_TYPE a pesar de no ser trivialmente 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.