<QTypeInfo>
Makros zur Angabe von Informationen zu benutzerdefinierten Typen. Mehr...
| Header: | #include <QTypeInfo> |
Makros
| Q_DECLARE_TYPEINFO(Type, Flags) |
Makro-Dokumentation
Q_DECLARE_TYPEINFO(Type, Flags)
Mit diesem Makro können Sie Informationen zu einem benutzerdefinierten Typ angeben Type. Anhand genauer Typinformationen können die generischen Container von Qt geeignete Speichermethoden und Algorithmen auswählen.
Flags kann einer der folgenden Werte sein:
Q_PRIMITIVE_TYPEGibt an, dass für „ Type “ keine Operation erforderlich ist, um ordnungsgemäß zerstört zu werden, und dass es möglich ist, mit `memcpy()` eine gültige, unabhängige Kopie eines Objekts zu erstellen.Q_RELOCATABLE_TYPEGibt an, dass ` Type ` über einen Konstruktor und/oder einen Destruktor verfügt, aber dennoch mithilfe von `memcpy()` im Speicher verschoben werden kann.Q_MOVABLE_TYPEentspricht „Q_RELOCATABLE_TYPE“. Verwenden Sie in neuem Code vorzugsweise „Q_RELOCATABLE_TYPE“. Hinweis: Trotz des Namens hat dies nichts mit Move-Konstruktoren oder der Move-Semantik in C++ zu tun.Q_COMPLEX_TYPE(Standard) gibt an, dass „ Type “ über Konstruktoren und/oder einen Destruktor verfügt und nicht im Speicher verschoben werden darf.
Beispiel für einen „primitiven“ Typ:
struct Point3D
{
int x;
int y;
int z;
};
Q_DECLARE_TYPEINFO(Point3D, Q_PRIMITIVE_TYPE);Ein Beispiel für einen nicht-POD-„primitiven“ Typ ist ` QUuid`: Auch wenn ` QUuid ` Konstruktoren besitzt (und daher kein POD ist), stellt jedes Bitmuster dennoch ein gültiges Objekt dar, und mit `memcpy()` lässt sich eine gültige, unabhängige Kopie eines ` QUuid `-Objekts erstellen.
Beispiel für einen verschiebbaren Typ:
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 versucht, die Klasse eines Typs anhand von Standard-C++-Typ-Traits zu ermitteln; verwenden Sie dieses Makro, um das Verhalten anzupassen. Beispielsweise kämen viele Typen für `Q_RELOCATABLE_TYPE` in Frage, obwohl sie nicht trivial kopierbar sind.
© 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.