QVariant Class
Die Klasse QVariant fungiert wie eine Vereinigung für die gängigsten Qt-Datentypen. Mehr...
Kopfzeile: | #include <QVariant> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- Liste aller Mitglieder, einschließlich vererbter Mitglieder
- Ausgeschiedene Mitglieder
- QVariant ist Teil von Implicitly Shared Classes.
Diese Klasse ist gleichwertig-vergleichbar.
Öffentliche Funktionen
QVariant() | |
QVariant(QChar c) | |
QVariant(const char *val) | |
QVariant(double val) | |
QVariant(float val) | |
QVariant(int val) | |
QVariant(qlonglong val) | |
QVariant(qulonglong val) | |
QVariant(uint val) | |
QVariant(QMetaType type, const void *copy = nullptr) | |
(since 6.6) | QVariant(std::in_place_type_t<T>, Args &&... args) |
(since 6.6) | QVariant(std::in_place_type_t<T>, std::initializer_list<U> il, Args &&... args) |
QVariant(QDate val) | |
QVariant(QLatin1StringView val) | |
QVariant(QLine val) | |
QVariant(QLineF val) | |
QVariant(QPoint val) | |
QVariant(QPointF val) | |
QVariant(QRect val) | |
QVariant(QRectF val) | |
QVariant(QSize val) | |
QVariant(QSizeF val) | |
QVariant(QTime val) | |
QVariant(QUuid val) | |
QVariant(bool val) | |
QVariant(const QBitArray &val) | |
QVariant(const QByteArray &val) | |
QVariant(const QDateTime &val) | |
QVariant(const QEasingCurve &val) | |
QVariant(const QHash<QString, QVariant> &val) | |
QVariant(const QJsonArray &val) | |
QVariant(const QJsonDocument &val) | |
QVariant(const QJsonObject &val) | |
QVariant(const QJsonValue &val) | |
QVariant(const QList<QVariant> &val) | |
QVariant(const QLocale &l) | |
QVariant(const QMap<QString, QVariant> &val) | |
QVariant(const QModelIndex &val) | |
QVariant(const QPersistentModelIndex &val) | |
QVariant(const QRegularExpression &re) | |
QVariant(const QString &val) | |
QVariant(const QStringList &val) | |
QVariant(const QUrl &val) | |
QVariant(const QVariant &p) | |
QVariant(QVariant &&other) | |
~QVariant() | |
bool | canConvert() const |
(since 6.0) bool | canConvert(QMetaType type) const |
bool | canView() const |
void | clear() |
const void * | constData() const |
(since 6.0) bool | convert(QMetaType targetType) |
void * | data() |
const void * | data() const |
(since 6.6) T & | emplace(Args &&... args) |
(since 6.6) T & | emplace(std::initializer_list<U> list, Args &&... args) |
bool | isNull() const |
bool | isValid() const |
(since 6.0) QMetaType | metaType() const |
void | setValue(QVariant &&value) |
void | setValue(T &&value) |
void | setValue(const QVariant &value) |
void | swap(QVariant &other) |
QBitArray | toBitArray() const |
bool | toBool() const |
QByteArray | toByteArray() const |
QChar | toChar() const |
QDate | toDate() const |
QDateTime | toDateTime() const |
double | toDouble(bool *ok = nullptr) const |
QEasingCurve | toEasingCurve() const |
float | toFloat(bool *ok = nullptr) const |
QHash<QString, QVariant> | toHash() const |
int | toInt(bool *ok = nullptr) const |
QJsonArray | toJsonArray() const |
QJsonDocument | toJsonDocument() const |
QJsonObject | toJsonObject() const |
QJsonValue | toJsonValue() const |
QLine | toLine() const |
QLineF | toLineF() const |
QList<QVariant> | toList() const |
QLocale | toLocale() const |
qlonglong | toLongLong(bool *ok = nullptr) const |
QMap<QString, QVariant> | toMap() const |
QModelIndex | toModelIndex() const |
QPersistentModelIndex | toPersistentModelIndex() const |
QPoint | toPoint() const |
QPointF | toPointF() const |
qreal | toReal(bool *ok = nullptr) const |
QRect | toRect() const |
QRectF | toRectF() const |
QRegularExpression | toRegularExpression() const |
QSize | toSize() const |
QSizeF | toSizeF() const |
QString | toString() const |
QStringList | toStringList() const |
QTime | toTime() const |
uint | toUInt(bool *ok = nullptr) const |
qulonglong | toULongLong(bool *ok = nullptr) const |
QUrl | toUrl() const |
QUuid | toUuid() const |
int | typeId() const |
const char * | typeName() const |
int | userType() const |
T | value() const & |
T | view() |
QVariant & | operator=(QVariant &&other) |
QVariant & | operator=(const QVariant &variant) |
Statische öffentliche Mitglieder
(since 6.0) QPartialOrdering | compare(const QVariant &lhs, const QVariant &rhs) |
(since 6.7) QVariant | fromMetaType(QMetaType type, const void *copy = nullptr) |
QVariant | fromStdVariant(const std::variant<Types...> &value) |
(since 6.6) QVariant | fromStdVariant(std::variant<Types...> &&value) |
QVariant | fromValue(const T &value) |
(since 6.6) QVariant | fromValue(T &&value) |
Verwandte Nicht-Mitglieder
QVariantHash | |
QVariantList | |
QVariantMap | |
(since 6.6) T & | get(QVariant &v) |
(since 6.6) T && | get(QVariant &&v) |
(since 6.6) const T & | get(const QVariant &v) |
(since 6.6) const T && | get(const QVariant &&v) |
(since 6.6) T * | get_if(QVariant *v) |
(since 6.6) const T * | get_if(const QVariant *v) |
T | qvariant_cast(const QVariant &value) |
(since 6.7) T | qvariant_cast(QVariant &&value) |
bool | operator!=(const QVariant &lhs, const QVariant &rhs) |
QDataStream & | operator<<(QDataStream &s, const QVariant &p) |
bool | operator==(const QVariant &lhs, const QVariant &rhs) |
QDataStream & | operator>>(QDataStream &s, QVariant &p) |
Detaillierte Beschreibung
Da C++ verbietet, dass Unions Typen enthalten, die keine Standardkonstruktoren oder -destruktoren haben, können die meisten interessanten Qt-Klassen nicht in Unions verwendet werden. Ohne QVariant wäre dies ein Problem für QObject::property() und für die Arbeit mit Datenbanken usw.
Ein QVariant-Objekt enthält jeweils nur einen einzigen Wert eines typeId(). (Einige Typen sind mehrwertig, z. B. eine String-Liste.) Sie können herausfinden, welchen Typ, T, die Variante enthält, sie mit convert() in einen anderen Typ konvertieren, ihren Wert mit einer der toT()-Funktionen (z. B. toSize()) erhalten und mit canConvert() prüfen, ob der Typ in einen bestimmten Typ konvertiert werden kann.
Die Methoden mit dem Namen toT() (z. B. toInt(), toString()) sind const. Wenn Sie nach dem gespeicherten Typ fragen, geben sie eine Kopie des gespeicherten Objekts zurück. Wenn Sie nach einem Typ fragen, der aus dem gespeicherten Typ erzeugt werden kann, kopiert und konvertiert toT() und lässt das Objekt selbst unverändert. Wenn Sie nach einem Typ fragen, der nicht aus dem gespeicherten Typ generiert werden kann, hängt das Ergebnis vom Typ ab; Einzelheiten finden Sie in der Funktionsdokumentation.
Hier ist ein Beispielcode, um die Verwendung von QVariant zu demonstrieren:
QDataStream out(...);QVariant v(123); // Die Variante enthält nun einen intint x = v.toInt(); // x = 123out<< v; // Schreibt ein Typ-Tag und einen int nach outv = QVariant(tr("hello")); // Die Variante enthält nun einen QStringint y = v.toInt(); // y = 0, da v nicht in einen int umgewandelt werden kannQString s = v.toString(); // s = tr("hallo") (siehe QObject::tr())out<< v; // Schreibt ein Typ-Tag und einen QString nach out...QDataStream in(...); // (öffnet den zuvor geschriebenen Stream)in>> v; // Liest eine Int-Varianteint z = v.toInt(); // z = 123qDebug("Type is %s", // prints "Type is int" v.typeName()); v = v.toInt() + 100; // Die Variante enthält nun den Wert 223v = QVariant(QStringList()); // Die Variante enthält nun eine QStringList
Sie können sogar QList<QVariant> und QMap<QString, QVariant> Werte in einer Variante speichern, so dass Sie leicht beliebig komplexe Datenstrukturen beliebiger Typen konstruieren können. Dies ist sehr leistungsfähig und vielseitig, kann sich aber als weniger speicher- und geschwindigkeitseffizient erweisen als die Speicherung bestimmter Typen in Standarddatenstrukturen.
QVariant unterstützt auch den Begriff der Nullwerte. Eine Variante ist null, wenn die Variante keinen initialisierten Wert oder einen Null-Zeiger enthält.
QVariant kann erweitert werden, um andere Typen als die im QMetaType::Type enum genannten zu unterstützen. Siehe Erstellen von benutzerdefinierten Qt-Typen für Details.
Ein Hinweis zu GUI-Typen
Da QVariant Teil des Qt Core Moduls ist, kann es keine Konvertierungsfunktionen für Datentypen bereitstellen, die in Qt GUI definiert sind, wie z.B. QColor, QImage und QPixmap. Mit anderen Worten, es gibt keine toColor()
Funktion. Stattdessen können Sie die QVariant::value() oder die qvariant_cast() Template-Funktion verwenden. Ein Beispiel:
Die umgekehrte Konvertierung (z.B. von QColor nach QVariant) erfolgt automatisch für alle von QVariant unterstützten Datentypen, einschließlich GUI-bezogener Typen:
Verwendung von canConvert() und convert() nacheinander
Wenn canConvert() und convert() nacheinander verwendet werden, ist es möglich, dass canConvert() true, aber convert() false zurückgibt. Das liegt typischerweise daran, dass canConvert() nur die allgemeine Fähigkeit von QVariant, zwischen Typen zu konvertieren, bei geeigneten Daten meldet; es ist immer noch möglich, Daten zu liefern, die nicht konvertiert werden können.
Zum Beispiel würde canConvert(QMetaType::fromType<int>())
true zurückgeben, wenn es für eine Variante aufgerufen wird, die eine Zeichenkette enthält, weil QVariant prinzipiell in der Lage ist, Zeichenketten von Zahlen in Ganzzahlen zu konvertieren. Enthält die Zeichenkette jedoch nicht-numerische Zeichen, kann sie nicht in eine Ganzzahl konvertiert werden, und jeder Versuch, sie zu konvertieren, schlägt fehl. Daher ist es wichtig, dass beide Funktionen bei einer erfolgreichen Konvertierung true zurückgeben.
Siehe auch QMetaType.
Dokumentation der Mitgliedsfunktionen
Gibt den Speichertyp des in der Variante gespeicherten Wertes zurück. Dies ist dasselbe wie metaType().id().
Siehe auch metaType().
Gibt einen Zeiger auf das enthaltene Objekt als generisches void* zurück, in das nicht geschrieben werden kann.
Siehe auch get_if() und QMetaType.
[noexcept]
QVariant::QVariant()
Konstruiert eine ungültige Variante.
[noexcept]
QVariant::QVariant(QChar c)
Konstruiert eine neue Variante mit einem char-Wert, c.
QVariant::QVariant(const char *val)
Konstruiert eine neue Variante mit einem String-Wert von val. Die Variante erstellt eine tiefe Kopie von val in eine QString unter der Annahme einer UTF-8-Kodierung der Eingabe val.
Beachten Sie, dass val zum Speichern in der Variante in QString konvertiert wird und QVariant::userType() QMetaType::QString für die Variante zurückgibt.
Sie können diesen Operator deaktivieren, indem Sie QT_NO_CAST_FROM_ASCII
definieren, wenn Sie Ihre Anwendungen kompilieren.
[noexcept]
QVariant::QVariant(double val)
Konstruiert eine neue Variante mit einem Fließkommawert, val.
[noexcept]
QVariant::QVariant(float val)
Konstruiert eine neue Variante mit einem Fließkommawert, val.
[noexcept]
QVariant::QVariant(int val)
Konstruiert eine neue Variante mit einem ganzzahligen Wert, val.
[noexcept]
QVariant::QVariant(qlonglong val)
Konstruiert eine neue Variante mit einem Long-Long-Integer-Wert, val.
[noexcept]
QVariant::QVariant(qulonglong val)
Konstruiert eine neue Variante mit einem vorzeichenlosen Long-Long-Integer-Wert, val.
[noexcept]
QVariant::QVariant(uint val)
Konstruiert eine neue Variante mit einem ganzzahligen Wert ohne Vorzeichen, val.
[explicit]
QVariant::QVariant(QMetaType type, const void *copy = nullptr)
Konstruiert eine Variante des Typs type und initialisiert sie mit einer Kopie von *copy
, wenn copy nicht nullptr
ist (in diesem Fall muss copy auf ein Objekt des Typs type zeigen).
Beachten Sie, dass Sie die Adresse des Objekts, das Sie speichern möchten, übergeben müssen.
Normalerweise brauchen Sie diesen Konstruktor nie zu verwenden. Verwenden Sie stattdessen QVariant::fromValue(), um Varianten aus den durch QMetaType::VoidStar
und QMetaType::QObjectStar
repräsentierten Zeigertypen zu konstruieren.
Wenn type die Konstruktion von Kopien nicht unterstützt und copy nicht nullptr
ist, wird die Variante ungültig sein. Ähnlich ist die Variante ungültig, wenn copy nullptr
ist und type die Standardkonstruktion nicht unterstützt.
Siehe auch QVariant::fromMetaType, QVariant::fromValue(), und QMetaType::Type.
[explicit noexcept(...), since 6.6]
template <typename T, typename... Args, QVariant::if_constructible<T, Args...> = true> QVariant::QVariant(std::in_place_type_t<T>, Args &&... args)
Konstruiert eine neue Variante, die einen Wert vom Typ T
enthält. Der enthaltene Wert wird mit den Argumenten std::forward<Args>(args)...
initialisiert.
Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn T
aus args konstruiert werden kann.
Dieser Konstruktor wird aus Gründen der STL/std::any-Kompatibilität bereitgestellt.
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.6 eingeführt.
Hinweis: Diese Funktion ist noexcept, wenn is_noexcept_constructible<q20::remove_cvref_t<T>, Args...>::value
true
ist.
[explicit noexcept(...), since 6.6]
template <typename T, typename U, typename... Args, QVariant::if_constructible<T, std::initializer_list<U> &, Args...> = true> QVariant::QVariant(std::in_place_type_t<T>, std::initializer_list<U> il, Args &&... args)
Dies ist eine überladene Funktion.
Diese Überladung existiert, um Typen zu unterstützen, deren Konstruktoren ein initializer_list
annehmen. Sie verhält sich ansonsten äquivalent zur Überladung der nicht-initialisierten Liste in_place_type_t
.
Diese Funktion wurde in Qt 6.6 eingeführt.
Hinweis: Diese Funktion ist noexcept, wenn is_noexcept_constructible<q20::remove_cvref_t<T>,
std::initializer_list<U> &,
Args...
>::value
true
ist.
[noexcept]
QVariant::QVariant(QDate val)
Konstruiert eine neue Variante mit einem Datumswert, val.
QVariant::QVariant(QLatin1StringView val)
Konstruiert eine neue Variante mit einem QString Wert aus der Latin-1 Zeichenkette, die von val angezeigt wird.
[noexcept(...)]
QVariant::QVariant(QLine val)
Konstruiert eine neue Variante mit einem Zeilenwert von val.
Hinweis: Diese Funktion ist noexcept, wenn Private::FitsInInternalSize<sizeof(int) * 4>
true
ist.
[noexcept(...)]
QVariant::QVariant(QLineF val)
Konstruiert eine neue Variante mit einem Zeilenwert von val.
Hinweis: Diese Funktion ist noexcept, wenn Private::FitsInInternalSize<sizeof(qreal) * 4>
true
ist.
[noexcept]
QVariant::QVariant(QPoint val)
Konstruiert eine neue Variante mit einem Punktwert von val.
[noexcept(...)]
QVariant::QVariant(QPointF val)
Konstruiert eine neue Variante mit einem Punktwert von val.
Hinweis: Diese Funktion ist noexcept, wenn Private::FitsInInternalSize<sizeof(qreal) * 2>
true
ist.
[noexcept(...)]
QVariant::QVariant(QRect val)
Konstruiert eine neue Variante mit einem rect-Wert von val.
Hinweis: Diese Funktion ist noexcept, wenn Private::FitsInInternalSize<sizeof(int) * 4>
gleich true
ist.
[noexcept(...)]
QVariant::QVariant(QRectF val)
Konstruiert eine neue Variante mit einem rect-Wert von val.
Hinweis: Diese Funktion ist noexcept, wenn Private::FitsInInternalSize<sizeof(qreal) * 4>
gleich true
ist.
[noexcept]
QVariant::QVariant(QSize val)
Konstruiert eine neue Variante mit einem Größenwert von val.
[noexcept(...)]
QVariant::QVariant(QSizeF val)
Konstruiert eine neue Variante mit einem Größenwert von val.
Hinweis: Diese Funktion ist noexcept, wenn Private::FitsInInternalSize<sizeof(qreal) * 2>
true
ist.
[noexcept]
QVariant::QVariant(QTime val)
Konstruiert eine neue Variante mit einem Zeitwert, val.
[noexcept(...)]
QVariant::QVariant(QUuid val)
Konstruiert eine neue Variante mit einem uuid-Wert, val.
Hinweis: Diese Funktion ist noexcept, wenn Private::FitsInInternalSize<16>
true
ist.
[noexcept]
QVariant::QVariant(bool val)
Konstruiert eine neue Variante mit einem booleschen Wert, val.
[noexcept]
QVariant::QVariant(const QBitArray &val)
Konstruiert eine neue Variante mit einem Bitarray-Wert, val.
[noexcept]
QVariant::QVariant(const QByteArray &val)
Konstruiert eine neue Variante mit einem Bytearray-Wert, val.
[noexcept]
QVariant::QVariant(const QDateTime &val)
Konstruiert eine neue Variante mit einem Datums-/Zeitwert, val.
QVariant::QVariant(const QEasingCurve &val)
Konstruiert eine neue Variante mit einem Entspannungskurvenwert, val.
[noexcept]
QVariant::QVariant(const QHash<QString, QVariant> &val)
Konstruiert eine neue Variante mit einem Hash von QVariants, val.
[noexcept]
QVariant::QVariant(const QJsonArray &val)
Konstruiert eine neue Variante mit einem json-Array-Wert, val.
QVariant::QVariant(const QJsonDocument &val)
Konstruiert eine neue Variante mit einem json-Dokumentwert, val.
[noexcept]
QVariant::QVariant(const QJsonObject &val)
Konstruiert eine neue Variante mit einem json-Objektwert, val.
[noexcept(...)]
QVariant::QVariant(const QJsonValue &val)
Konstruiert eine neue Variante mit einem json-Wert, val.
Hinweis: Diese Funktion ist noexcept, wenn Private::FitsInInternalSize<sizeof(CborValueStandIn)>
true
ist.
[noexcept]
QVariant::QVariant(const QList<QVariant> &val)
Konstruiert eine neue Variante mit einem Listenwert, val.
[noexcept]
QVariant::QVariant(const QLocale &l)
Konstruiert eine neue Variante mit einem Locale-Wert, l.
[noexcept]
QVariant::QVariant(const QMap<QString, QVariant> &val)
Konstruiert eine neue Variante mit einer Karte von QVariants, val.
[noexcept(...)]
QVariant::QVariant(const QModelIndex &val)
Konstruiert eine neue Variante mit einem QModelIndex Wert, val.
Hinweis: Diese Funktion ist noexcept, wenn Private::FitsInInternalSize<8 + 2 * sizeof(quintptr)>
true
ist.
QVariant::QVariant(const QPersistentModelIndex &val)
Konstruiert eine neue Variante mit einem QPersistentModelIndex Wert, val.
[noexcept]
QVariant::QVariant(const QRegularExpression &re)
Konstruiert eine neue Variante mit dem Wert des regulären Ausdrucks re.
[noexcept]
QVariant::QVariant(const QString &val)
Konstruiert eine neue Variante mit einem String-Wert, val.
[noexcept]
QVariant::QVariant(const QStringList &val)
Konstruiert eine neue Variante mit einem String-Listenwert, val.
[noexcept]
QVariant::QVariant(const QUrl &val)
Konstruiert eine neue Variante mit einem Url-Wert von val.
QVariant::QVariant(const QVariant &p)
Konstruiert eine Kopie der Variante p, die als Argument an diesen Konstruktor übergeben wird.
[noexcept]
QVariant::QVariant(QVariant &&other)
Move-konstruiert eine QVariant-Instanz, die auf das gleiche Objekt zeigt, auf das other gezeigt hat.
[noexcept]
QVariant::~QVariant()
Zerstört die QVariant und das darin enthaltene Objekt.
template <typename T> bool QVariant::canConvert() const
Gibt true
zurück, wenn die Variante in den Vorlagentyp T
konvertiert werden kann, andernfalls false.
Beispiel:
QVariant v = 42; v.canConvert<int>(); // returns true v.canConvert<QString>(); // returns true MyCustomStruct s; v.setValue(s); v.canConvert<int>(); // returns false v.canConvert<MyCustomStruct>(); // returns true
Ein QVariant, das einen Zeiger auf einen von QObject abgeleiteten Typ enthält, gibt für diese Funktion ebenfalls true zurück, wenn ein qobject_cast auf den Vorlagentyp T
erfolgreich wäre. Beachten Sie, dass dies nur für QObject Unterklassen funktioniert, die das Makro Q_OBJECT verwenden.
Siehe auch convert().
[since 6.0]
bool QVariant::canConvert(QMetaType type) const
Gibt true
zurück, wenn der Typ der Variante in den angeforderten Typ, type, umgewandelt werden kann. Ein solches Casting wird automatisch beim Aufruf der Methoden toInt(), toBool(), ... durchgeführt.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch QMetaType::canConvert().
template <typename T> bool QVariant::canView() const
Gibt true
zurück, wenn eine veränderbare Ansicht des Vorlagentyps T
auf dieser Variante erstellt werden kann, andernfalls false
.
Siehe auch value().
void QVariant::clear()
Konvertieren Sie diese Variante in den Typ QMetaType::UnknownType und geben Sie alle verwendeten Ressourcen frei.
[static, since 6.0]
QPartialOrdering QVariant::compare(const QVariant &lhs, const QVariant &rhs)
Vergleicht die Objekte unter lhs und rhs auf ihre Reihenfolge.
Gibt QPartialOrdering::Unordered zurück, wenn der Vergleich nicht unterstützt wird oder die Werte nicht geordnet sind. Gibt andernfalls QPartialOrdering::Less, QPartialOrdering::Equivalent oder QPartialOrdering::Greater zurück, wenn lhs kleiner, gleich oder größer als rhs ist.
Wenn die Varianten Daten mit einem anderen Metatyp enthalten, werden die Werte als ungeordnet betrachtet, es sei denn, sie sind beide vom Typ numerisch oder Zeiger, wobei die regulären numerischen oder Zeiger-Vergleichsregeln verwendet werden.
Hinweis: Wenn ein numerischer Vergleich durchgeführt wird und mindestens ein Wert NaN ist, wird QPartialOrdering::Unordered zurückgegeben.
Wenn beide Varianten Daten desselben Metatyps enthalten, verwendet die Methode die QMetaType::compare Methode, um die Reihenfolge der beiden Varianten zu bestimmen.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch QMetaType::compare() und QMetaType::isOrdered().
[since 6.0]
bool QVariant::convert(QMetaType targetType)
Überführt die Variante in den angeforderten Typ, targetType. Wenn der Cast nicht durchgeführt werden kann, wird die Variante trotzdem in den angeforderten Typ geändert, aber in einem gelöschten Null-Zustand belassen, ähnlich dem von QVariant(Typ) konstruierten.
Gibt true
zurück, wenn der aktuelle Typ der Variante erfolgreich gecastet wurde; andernfalls wird false
zurückgegeben.
Ein QVariant, das einen Zeiger auf einen von QObject abgeleiteten Typ enthält, wird ebenfalls konvertiert und gibt für diese Funktion true zurück, wenn ein qobject_cast auf den durch targetType beschriebenen Typ erfolgreich wäre. Beachten Sie, dass dies nur für QObject Unterklassen funktioniert, die das Makro Q_OBJECT verwenden.
Hinweis: Die Konvertierung von QVarianten, die null sind, weil sie nicht initialisiert wurden oder eine vorherige Konvertierung fehlgeschlagen ist, schlägt immer fehl, ändert den Typ, bleibt null und gibt false
zurück.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch canConvert() und clear().
void *QVariant::data()
Gibt einen Zeiger auf das enthaltene Objekt als generisches void* zurück, in das geschrieben werden kann.
Diese Funktion trennt die QVariant. Wenn sie auf einer null-QVariant aufgerufen wird, ist die QVariant nach dem Aufruf nicht null.
Siehe auch get_if() und QMetaType.
[since 6.6]
template <typename T, typename... Args, QVariant::if_constructible<T, Args...> = true> T &QVariant::emplace(Args &&... args)
Ersetzt das derzeit in *this
gehaltene Objekt durch ein Objekt des Typs T
, das aus args...
konstruiert wurde. Wenn *this
nicht leer war, wird das zuvor gehaltene Objekt zuerst zerstört. Wenn möglich, verwendet diese Methode den von QVariant zugewiesenen Speicher wieder. Gibt eine Referenz auf das neu erstellte Objekt zurück.
Diese Funktion wurde in Qt 6.6 eingeführt.
[since 6.6]
template <typename T, typename U, typename... Args, QVariant::if_constructible<T, std::initializer_list<U> &, Args...> = true> T &QVariant::emplace(std::initializer_list<U> list, Args &&... args)
Dies ist eine überladene Funktion.
Diese Überladung existiert, um Typen zu unterstützen, deren Konstruktoren ein initializer_list
annehmen. Sie verhält sich ansonsten äquivalent zu der Überladung für nicht-initialisierte Listen.
Diese Funktion wurde in Qt 6.6 eingeführt.
[static, since 6.7]
QVariant QVariant::fromMetaType(QMetaType type, const void *copy = nullptr)
Erzeugt eine Variante des Typs type und initialisiert sie mit einer Kopie von *copy
, falls copy nicht nullptr
ist (in diesem Fall muss copy auf ein Objekt des Typs type zeigen).
Beachten Sie, dass Sie die Adresse des Objekts, das Sie speichern möchten, übergeben müssen.
Normalerweise brauchen Sie diesen Konstruktor nie zu verwenden. Verwenden Sie stattdessen QVariant::fromValue(), um Varianten aus den durch QMetaType::VoidStar
und QMetaType::QObjectStar
repräsentierten Zeigertypen zu konstruieren.
Wenn type die Konstruktion von Kopien nicht unterstützt und copy nicht nullptr
ist, wird die Variante ungültig sein. Ähnlich ist die Variante ungültig, wenn copy nullptr
ist und type die Standardkonstruktion nicht unterstützt.
Gibt die QVariant zurück, die wie oben beschrieben erstellt wurde.
Diese Funktion wurde in Qt 6.7 eingeführt.
Siehe auch QVariant::fromValue() und QMetaType::Type.
[static]
template <typename... Types> QVariant QVariant::fromStdVariant(const std::variant<Types...> &value)
Gibt eine QVariant mit dem Typ und dem Wert der aktiven Variante von value zurück. Wenn der aktive Typ std::monostate ist, wird ein Standardwert QVariant zurückgegeben.
Hinweis: Mit dieser Methode müssen Sie die Variante nicht als Qt-Metatyp registrieren, da die std::variant vor dem Speichern aufgelöst wird. Die Komponententypen sollten jedoch registriert werden.
Siehe auch fromValue().
[static, since 6.6]
template <typename... Types> QVariant QVariant::fromStdVariant(std::variant<Types...> &&value)
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.6 eingeführt.
[static]
template <typename T> QVariant QVariant::fromValue(const T &value)
Gibt ein QVariant zurück, das eine Kopie von value enthält. Verhält sich ansonsten genau wie setValue().
Beispiel:
MyCustomStruct s; return QVariant::fromValue(s);
Siehe auch setValue() und value().
[static, since 6.6]
template <typename T, QVariant::if_rvalue<T> = true> QVariant QVariant::fromValue(T &&value)
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.6 eingeführt.
bool QVariant::isNull() const
Gibt true
zurück, wenn dies eine Null-Variante ist, andernfalls false.
Eine Variante wird als null betrachtet, wenn sie keinen initialisierten Wert oder einen Null-Zeiger enthält.
Hinweis: Dieses Verhalten wurde gegenüber Qt 5 geändert, wo isNull() auch true zurückgab, wenn die Variante ein Objekt eines eingebauten Typs mit einer isNull()-Methode enthielt, die für dieses Objekt true zurückgab.
Siehe auch convert().
bool QVariant::isValid() const
Gibt true
zurück, wenn der Speichertyp dieser Variante nicht QMetaType::UnknownType ist; andernfalls wird false
zurückgegeben.
[since 6.0]
QMetaType QVariant::metaType() const
Gibt die QMetaType des in der Variante gespeicherten Wertes zurück.
Diese Funktion wurde in Qt 6.0 eingeführt.
void QVariant::setValue(QVariant &&value)
Verschiebt value über dieses QVariant. Es ist gleichbedeutend mit einer einfachen Verschiebung der Zuweisung von value zu diesem QVariant.
Siehe auch value().
template <typename T, typename = std::enable_if_t<!std::is_same_v<std::decay_t<T>, QVariant>>> void QVariant::setValue(T &&value)
Speichert eine Kopie von value. Wenn T
ein Typ ist, den QVariant nicht unterstützt, wird QMetaType verwendet, um den Wert zu speichern. Ein Kompilierfehler tritt auf, wenn QMetaType den Typ nicht verarbeitet.
Beispiel:
QVariant v; v.setValue(5); int i = v.toInt(); // i is now 5 QString s = v.toString(); // s is now "5" MyCustomStruct c; v.setValue(c); ... MyCustomStruct c2 = v.value<MyCustomStruct>();
Siehe auch value(), fromValue(), und canConvert().
void QVariant::setValue(const QVariant &value)
Kopiert value über dieses QVariant. Dies ist gleichbedeutend mit der einfachen Zuweisung von value an QVariant.
[noexcept]
void QVariant::swap(QVariant &other)
Tauscht diese Variante mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.
QBitArray QVariant::toBitArray() const
Gibt die Variante als QBitArray zurück, wenn die Variante userType() QMetaType::QBitArray hat; andernfalls wird ein leeres Bit-Array zurückgegeben.
Siehe auch canConvert() und convert().
bool QVariant::toBool() const
Gibt die Variante als bool zurück, wenn die Variante userType() Bool hat.
Gibt true
zurück, wenn die Variante userType() QMetaType::Bool, QMetaType::QChar, QMetaType::Double, QMetaType::Int, QMetaType::LongLong, QMetaType::UInt oder QMetaType::ULongLong hat und der Wert ungleich Null ist, oder wenn die Variante den Typ QMetaType::QString oder QMetaType::QByteArray hat und ihr klein geschriebener Inhalt nicht einer der folgenden ist: leer, "0" oder "false"; andernfalls wird false
zurückgegeben.
Siehe auch canConvert() und convert().
QByteArray QVariant::toByteArray() const
Gibt die Variante als QByteArray zurück, wenn die Variante userType() QMetaType::QByteArray oder QMetaType::QString (umgewandelt mit QString::fromUtf8()) hat; andernfalls wird ein leeres Byte-Array zurückgegeben.
Siehe auch canConvert() und convert().
QChar QVariant::toChar() const
Gibt die Variante als QChar zurück, wenn die Variante userType() QMetaType::QChar, QMetaType::Int oder QMetaType::UInt hat; andernfalls wird ein ungültiger QChar zurückgegeben.
Siehe auch canConvert() und convert().
QDate QVariant::toDate() const
Gibt die Variante als QDate zurück, wenn die Variante userType() QMetaType::QDate, QMetaType::QDateTime, oder QMetaType::QString hat; andernfalls wird ein ungültiges Datum zurückgegeben.
Wenn type() QMetaType::QString ist, wird ein ungültiges Datum zurückgegeben, wenn die Zeichenkette nicht als Datum im Format Qt::ISODate geparst werden kann.
Siehe auch canConvert() und convert().
QDateTime QVariant::toDateTime() const
Gibt die Variante als QDateTime zurück, wenn die Variante userType() QMetaType::QDateTime, QMetaType::QDate oder QMetaType::QString hat; andernfalls wird ein ungültiges Datum/Uhrzeit zurückgegeben.
Wenn type() QMetaType::QString ist, wird ein ungültiges Datum/Uhrzeit zurückgegeben, wenn die Zeichenkette nicht als Datum/Uhrzeit im Format Qt::ISODate geparst werden kann.
Siehe auch canConvert() und convert().
double QVariant::toDouble(bool *ok = nullptr) const
Gibt die Variante als Double zurück, wenn die Variante userType() QMetaType::Double, QMetaType::Float, QMetaType::Bool, QMetaType::QByteArray, QMetaType::Int, QMetaType::LongLong, QMetaType::QString, QMetaType::UInt, oder QMetaType::ULongLong hat; andernfalls wird 0.0 zurückgegeben.
Wenn ok nicht null ist: *
ok wird auf true gesetzt, wenn der Wert in einen double umgewandelt werden konnte; andernfalls *
ok wird auf false gesetzt.
Siehe auch canConvert() und convert().
QEasingCurve QVariant::toEasingCurve() const
Gibt die Variante als QEasingCurve zurück, wenn die Variante userType() QMetaType::QEasingCurve hat; andernfalls wird eine Standard-Entspannungskurve zurückgegeben.
Siehe auch canConvert() und convert().
float QVariant::toFloat(bool *ok = nullptr) const
Gibt die Variante als Float zurück, wenn die Variante userType() QMetaType::Double, QMetaType::Float, QMetaType::Bool, QMetaType::QByteArray, QMetaType::Int, QMetaType::LongLong, QMetaType::QString, QMetaType::UInt oder QMetaType::ULongLong hat; andernfalls wird 0.0 zurückgegeben.
Wenn ok nicht null ist: *
ok wird auf true gesetzt, wenn der Wert in ein Double umgewandelt werden konnte; andernfalls wird *
ok auf false gesetzt.
Siehe auch canConvert() und convert().
QHash<QString, QVariant> QVariant::toHash() const
Gibt die Variante als QHash<QString, QVariant> zurück, wenn die Variante den Typ() QMetaType::QVariantHash hat; andernfalls wird eine leere Map zurückgegeben.
Siehe auch canConvert() und convert().
int QVariant::toInt(bool *ok = nullptr) const
Gibt die Variante als int zurück, wenn die Variante userType() QMetaType::Int, QMetaType::Bool, QMetaType::QByteArray, QMetaType::QChar, QMetaType::Double, QMetaType::LongLong, QMetaType::QString, QMetaType::UInt, oder QMetaType::ULongLong hat; andernfalls wird 0 zurückgegeben.
Wenn ok nicht null ist: *
ok wird auf true gesetzt, wenn der Wert in einen int konvertiert werden konnte; andernfalls wird *
ok auf false gesetzt.
Warnung: Wenn der Wert in QMetaType::LongLong umgewandelt werden kann, aber zu groß ist, um in einem int dargestellt zu werden, wird der daraus resultierende arithmetische Überlauf nicht in ok wiedergegeben. Eine einfache Abhilfe ist die Verwendung von QString::toInt().
Siehe auch canConvert() und convert().
QJsonArray QVariant::toJsonArray() const
Gibt die Variante als QJsonArray zurück, wenn die Variante userType() QJsonArray hat; andernfalls wird eine standardmäßig konstruierte QJsonArray zurückgegeben.
Siehe auch canConvert() und convert().
QJsonDocument QVariant::toJsonDocument() const
Gibt die Variante als QJsonDocument zurück, wenn die Variante userType() QJsonDocument hat; andernfalls wird eine standardmäßig konstruierte QJsonDocument zurückgegeben.
Siehe auch canConvert() und convert().
QJsonObject QVariant::toJsonObject() const
Gibt die Variante als QJsonObject zurück, wenn die Variante userType() QJsonObject hat; andernfalls wird eine standardmäßig konstruierte QJsonObject zurückgegeben.
Siehe auch canConvert() und convert().
QJsonValue QVariant::toJsonValue() const
Gibt die Variante als QJsonValue zurück, wenn die Variante userType() QJsonValue hat; andernfalls wird eine standardmäßig konstruierte QJsonValue zurückgegeben.
Siehe auch canConvert() und convert().
QLine QVariant::toLine() const
Gibt die Variante als QLine zurück, wenn die Variante userType() QMetaType::QLine hat; andernfalls wird ein ungültiger QLine zurückgegeben.
Siehe auch canConvert() und convert().
QLineF QVariant::toLineF() const
Gibt die Variante als QLineF zurück, wenn die Variante userType() QMetaType::QLineF hat; andernfalls wird ein ungültiger QLineF zurückgegeben.
Siehe auch canConvert() und convert().
QList<QVariant> QVariant::toList() const
Gibt die Variante als QVariantList zurück, wenn die Variante userType() QMetaType::QVariantList hat. Ist dies nicht der Fall, versucht QVariant, den Typ in eine Liste zu konvertieren und gibt ihn dann zurück. Dies gelingt für jeden Typ, der einen Konverter für QVariantList registriert hat oder der mit Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE als sequentieller Container deklariert wurde. Wenn keine dieser Bedingungen erfüllt ist, gibt diese Funktion eine leere Liste zurück.
Siehe auch canConvert() und convert().
QLocale QVariant::toLocale() const
Gibt die Variante als QLocale zurück, wenn die Variante userType() QMetaType::QLocale hat; andernfalls wird ein ungültiger QLocale zurückgegeben.
Siehe auch canConvert() und convert().
qlonglong QVariant::toLongLong(bool *ok = nullptr) const
Gibt die Variante als long long int zurück, wenn die Variante userType() QMetaType::LongLong, QMetaType::Bool, QMetaType::QByteArray, QMetaType::QChar, QMetaType::Double, QMetaType::Int, QMetaType::QString, QMetaType::UInt, oder QMetaType::ULongLong hat; andernfalls wird 0 zurückgegeben.
Wenn ok nicht null ist: *
ok
wird auf true gesetzt, wenn der Wert in einen int umgewandelt werden konnte; andernfalls wird *
ok
auf false gesetzt.
Siehe auch canConvert() und convert().
QMap<QString, QVariant> QVariant::toMap() const
Gibt die Variante als QVariantMap zurück, wenn die Variante type() QMetaType::QVariantMap hat. Ist dies nicht der Fall, versucht QVariant, den Typ in eine Map zu konvertieren und gibt ihn dann zurück. Dies gelingt für jeden Typ, der einen Konverter für QVariantMap registriert hat oder der mit Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE als assoziativer Container deklariert wurde. Wenn keine dieser Bedingungen erfüllt ist, gibt diese Funktion eine leere Map zurück.
Siehe auch canConvert() und convert().
QModelIndex QVariant::toModelIndex() const
Gibt die Variante als QModelIndex zurück, wenn die Variante userType() QModelIndex hat; andernfalls wird eine standardmäßig konstruierte QModelIndex zurückgegeben.
Siehe auch canConvert(), convert(), und toPersistentModelIndex().
QPersistentModelIndex QVariant::toPersistentModelIndex() const
Gibt die Variante als QPersistentModelIndex zurück, wenn die Variante userType() QPersistentModelIndex hat; andernfalls wird eine standardmäßig konstruierte QPersistentModelIndex zurückgegeben.
Siehe auch canConvert(), convert(), und toModelIndex().
QPoint QVariant::toPoint() const
Gibt die Variante als QPoint zurück, wenn die Variante userType() QMetaType::QPoint oder QMetaType::QPointF hat; andernfalls wird eine Null QPoint zurückgegeben.
Siehe auch canConvert() und convert().
QPointF QVariant::toPointF() const
Gibt die Variante als QPointF zurück, wenn die Variante userType() QMetaType::QPoint oder QMetaType::QPointF hat; andernfalls wird eine Null QPointF zurückgegeben.
Siehe auch canConvert() und convert().
qreal QVariant::toReal(bool *ok = nullptr) const
Gibt die Variante als qreal zurück, wenn die Variante userType() QMetaType::Double, QMetaType::Float, QMetaType::Bool, QMetaType::QByteArray, QMetaType::Int, QMetaType::LongLong, QMetaType::QString, QMetaType::UInt, oder QMetaType::ULongLong hat; andernfalls wird 0.0 zurückgegeben.
Wenn ok nicht null ist: *
ok wird auf true gesetzt, wenn der Wert in einen double konvertiert werden konnte; andernfalls wird *
ok auf false gesetzt.
Siehe auch canConvert() und convert().
QRect QVariant::toRect() const
Gibt die Variante als QRect zurück, wenn die Variante userType() QMetaType::QRect hat; andernfalls wird ein ungültiger QRect zurückgegeben.
Siehe auch canConvert() und convert().
QRectF QVariant::toRectF() const
Gibt die Variante als QRectF zurück, wenn die Variante userType() QMetaType::QRect oder QMetaType::QRectF hat; andernfalls wird ein ungültiger QRectF zurückgegeben.
Siehe auch canConvert() und convert().
QRegularExpression QVariant::toRegularExpression() const
Gibt die Variante als QRegularExpression zurück, wenn die Variante userType() QRegularExpression hat; andernfalls wird ein leeres QRegularExpression zurückgegeben.
Siehe auch canConvert() und convert().
QSize QVariant::toSize() const
Gibt die Variante als QSize zurück, wenn die Variante userType() QMetaType::QSize hat; andernfalls wird ein ungültiger QSize zurückgegeben.
Siehe auch canConvert() und convert().
QSizeF QVariant::toSizeF() const
Gibt die Variante als QSizeF zurück, wenn die Variante userType() QMetaType::QSizeF hat; andernfalls wird ein ungültiger QSizeF zurückgegeben.
Siehe auch canConvert() und convert().
QString QVariant::toString() const
Gibt die Variante als QString zurück, wenn die Variante ein userType() hat, einschließlich, aber nicht beschränkt auf:
QMetaType::QString, QMetaType::Bool, QMetaType::QByteArray, QMetaType::QChar, QMetaType::QDate, QMetaType::QDateTime, QMetaType::Double, QMetaType::Int, QMetaType::LongLong, QMetaType::QStringList, QMetaType::QTime, QMetaType::UInt, oder QMetaType::ULongLong.
Der Aufruf von QVariant::toString() für eine nicht unterstützte Variante gibt einen leeren String zurück.
Siehe auch canConvert() und convert().
QStringList QVariant::toStringList() const
Gibt die Variante als QStringList zurück, wenn die Variante userType() QMetaType::QStringList, QMetaType::QString, oder QMetaType::QVariantList eines Typs hat, der in QString konvertiert werden kann; andernfalls wird eine leere Liste zurückgegeben.
Siehe auch canConvert() und convert().
QTime QVariant::toTime() const
Gibt die Variante als QTime zurück, wenn die Variante userType() QMetaType::QTime, QMetaType::QDateTime, oder QMetaType::QString hat; andernfalls wird eine ungültige Zeit zurückgegeben.
Wenn type() QMetaType::QString ist, wird eine ungültige Zeit zurückgegeben, wenn die Zeichenkette nicht als Zeit im Format Qt::ISODate geparst werden kann.
Siehe auch canConvert() und convert().
uint QVariant::toUInt(bool *ok = nullptr) const
Gibt die Variante als unsigned int zurück, wenn die Variante userType() QMetaType::UInt, QMetaType::Bool, QMetaType::QByteArray, QMetaType::QChar, QMetaType::Double, QMetaType::Int, QMetaType::LongLong, QMetaType::QString oder QMetaType::ULongLong hat; andernfalls wird 0 zurückgegeben.
Wenn ok nicht null ist: *
ok wird auf true gesetzt, wenn der Wert in einen unsigned int konvertiert werden konnte; andernfalls *
ok wird auf false gesetzt.
Warnung: Wenn der Wert in QMetaType::ULongLong umgewandelt werden kann, aber zu groß ist, um in einem vorzeichenlosen int dargestellt zu werden, wird der daraus resultierende arithmetische Überlauf nicht in ok wiedergegeben. Eine einfache Abhilfe ist die Verwendung von QString::toUInt().
Siehe auch canConvert() und convert().
qulonglong QVariant::toULongLong(bool *ok = nullptr) const
Gibt die Variante als unsigned long long int zurück, wenn die Variante den Typ() QMetaType::ULongLong, QMetaType::Bool, QMetaType::QByteArray, QMetaType::QChar, QMetaType::Double, QMetaType::Int, QMetaType::LongLong, QMetaType::QString oder QMetaType::UInt hat; andernfalls wird 0 zurückgegeben.
Wenn ok nicht null ist: *
ok wird auf true gesetzt, wenn der Wert in einen int umgewandelt werden konnte; andernfalls wird *
ok auf false gesetzt.
Siehe auch canConvert() und convert().
QUrl QVariant::toUrl() const
Gibt die Variante als QUrl zurück, wenn die Variante userType() QMetaType::QUrl hat; andernfalls wird ein ungültiger QUrl zurückgegeben.
Siehe auch canConvert() und convert().
QUuid QVariant::toUuid() const
Gibt die Variante als QUuid zurück, wenn die Variante den Typ() QMetaType::QUuid, QMetaType::QByteArray oder QMetaType::QString hat; andernfalls wird eine standardmäßig konstruierte QUuid zurückgegeben.
Siehe auch canConvert() und convert().
const char *QVariant::typeName() const
Gibt den Namen des Typs zurück, der in der Variante gespeichert ist. Die zurückgegebenen Zeichenfolgen beschreiben den C++-Datentyp, der zum Speichern der Daten verwendet wird: z. B. "QFont", "QString" oder "QVariantList". Eine ungültige Variante gibt 0 zurück.
template <typename T> T QVariant::value() const &
Gibt den gespeicherten Wert zurück, der in den Vorlagentyp T
konvertiert wurde. Rufen Sie canConvert() auf, um herauszufinden, ob ein Typ konvertiert werden kann. Wenn der Wert nicht konvertiert werden kann, wird ein standardmäßig konstruierter Wert zurückgegeben.
Wenn der Typ T
von QVariant unterstützt wird, verhält sich diese Funktion genau wie toString(), toInt() usw.
Beispiel:
QVariant v; MyCustomStruct c; if (v.canConvert<MyCustomStruct>()) c = v.value<MyCustomStruct>(); v = 7; int i = v.value<int>(); // same as v.toInt() QString s = v.value<QString>(); // same as v.toString(), s is now "7" MyCustomStruct c2 = v.value<MyCustomStruct>(); // conversion failed, c2 is empty
Wenn QVariant einen Zeiger auf einen von QObject abgeleiteten Typ enthält, kann T
ein beliebiger QObject -Typ sein. Wenn der in QVariant gespeicherte Zeiger qobject_cast auf T sein kann, dann wird dieses Ergebnis zurückgegeben. Andernfalls wird nullptr
zurückgegeben. Beachten Sie, dass dies nur für QObject Unterklassen funktioniert, die das Makro Q_OBJECT verwenden.
Wenn QVariant einen sequentiellen Container enthält und T
QVariantList ist, werden die Elemente des Containers in QVariantumgewandelt und als QVariantList zurückgegeben.
QList<int> intList = {7, 11, 42};QVariant variant = QVariant::fromValue(intList);if (variant.canConvert<QVariantList>()) { QSequentialIterable iterable = variant.value<QSequentialIterable>() ; // Kann foreach verwenden:foreach(const QVariant &v, iterable) { qDebug() << v; } // Kann C++11 range-for verwenden: for(const QVariant &v: iterable) { qDebug() << v; } // Kann Iteratoren verwenden: QSequentialIterable::const_iterator it = iterable.begin(); const QSequentialIterable::const_iterator end = iterable.end(); for ( ; it != end;++it) { qDebug() << *it; } }
Siehe auch setValue(), fromValue(), canConvert(), und Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE().
template <typename T> T QVariant::view()
Gibt eine veränderbare Ansicht des Vorlagentyps T
auf den gespeicherten Wert zurück. Rufen Sie canView() auf, um herauszufinden, ob eine solche Ansicht unterstützt wird. Wenn keine solche Ansicht erstellt werden kann, wird der gespeicherte Wert in den Vorlagentyp T
konvertiert. Rufen Sie canConvert() auf, um herauszufinden, ob ein Typ konvertiert werden kann. Wenn der Wert weder angezeigt noch konvertiert werden kann, wird ein standardmäßig konstruierter Wert zurückgegeben.
Siehe auch canView() und Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE().
[noexcept]
QVariant &QVariant::operator=(QVariant &&other)
Verschieben - weist other dieser QVariant Instanz zu.
QVariant &QVariant::operator=(const QVariant &variant)
Weist den Wert der Variante variant dieser Variante zu.
Verwandte Nicht-Mitglieder
[noexcept, since 6.6]
template <typename T> T *get_if(QVariant *v)
[noexcept, since 6.6]
template <typename T> const T *get_if(const QVariant *v)
Wenn v ein Objekt vom Typ T
enthält, wird ein Zeiger auf das enthaltene Objekt zurückgegeben, andernfalls wird nullptr
zurückgegeben.
Die Überladung, die ein veränderbares v annimmt, trennt v: Wenn sie auf einem null v mit passendem Typ T
aufgerufen wird, ist v nach dem Aufruf nicht null.
Diese Funktionen werden für die Kompatibilität mit std::variant
bereitgestellt.
Diese Funktion wurde in Qt 6.6 eingeführt.
Siehe auch data().
[since 6.6]
template <typename T> T &get(QVariant &v)
[since 6.6]
template <typename T> T &&get(QVariant &&v)
[since 6.6]
template <typename T> const T &get(const QVariant &v)
[since 6.6]
template <typename T> const T &&get(const QVariant &&v)
Wenn v ein Objekt vom Typ T
enthält, wird ein Verweis auf das enthaltene Objekt zurückgegeben, andernfalls hat der Aufruf ein undefiniertes Verhalten.
Die Überladungen, die ein veränderbares v nehmen, lösen v: Wenn sie auf einem null v mit passendem Typ T
aufgerufen werden, wird v nach dem Aufruf nicht null sein.
Diese Funktionen werden für die Kompatibilität mit std::variant
bereitgestellt.
Diese Funktion wurde in Qt 6.6 eingeführt.
Siehe auch get_if() und data().
[alias]
QVariantHash
Synonym für QHash<QString, QVariant>.
[alias]
QVariantList
[alias]
QVariantMap
Synonym für QMap<QString, QVariant>.
template <typename T> T qvariant_cast(const QVariant &value)
Gibt die angegebene value konvertiert in den Schablonentyp T
zurück.
Diese Funktion ist äquivalent zu QVariant::value().
Siehe auch QVariant::value().
[since 6.7]
template <typename T> T qvariant_cast(QVariant &&value)
Dies ist eine überladene Funktion.
Gibt die angegebene value zurück, konvertiert in den Template-Typ T
.
Diese Funktion wurde in Qt 6.7 eingeführt.
[noexcept]
bool operator!=(const QVariant &lhs, const QVariant &rhs)
Gibt false
zurück, wenn lhs und rhs gleich sind; andernfalls wird true
zurückgegeben.
QVariant verwendet den Gleichheitsoperator des enthaltenen type(), um auf Gleichheit zu prüfen.
Varianten verschiedener Typen werden immer als nicht gleich verglichen, mit ein paar Ausnahmen:
- Wenn beide Typen numerische Typen sind (Ganzzahlen und Fließkommazahlen), vergleicht Qt diese Typen unter Verwendung der Standard-C++-Type-Promotion-Regeln.
- Wenn ein Typ numerisch und der andere QString ist, versucht Qt, QString in einen passenden numerischen Typ zu konvertieren und vergleicht diese bei Erfolg.
- Wenn beide Varianten Zeiger auf QObject abgeleitete Typen enthalten, prüft QVariant, ob die Typen verwandt sind und auf das gleiche Objekt zeigen.
QDataStream &operator<<(QDataStream &s, const QVariant &p)
Schreibt eine Variante p in den Stream s.
Siehe auch Format der QDataStream-Operatoren.
[noexcept]
bool operator==(const QVariant &lhs, const QVariant &rhs)
Gibt true
zurück, wenn lhs und rhs gleich sind; andernfalls wird false
zurückgegeben.
QVariant verwendet den Gleichheitsoperator des enthaltenen type(), um auf Gleichheit zu prüfen.
Varianten verschiedener Typen werden immer als nicht gleich verglichen, mit ein paar Ausnahmen:
- Wenn beide Typen numerische Typen sind (Ganzzahlen und Fließkommazahlen), vergleicht Qt diese Typen unter Verwendung der Standard-C++-Type-Promotion-Regeln.
- Wenn ein Typ numerisch und der andere QString ist, versucht Qt, QString in einen passenden numerischen Typ zu konvertieren und vergleicht diese bei Erfolg.
- Wenn beide Varianten Zeiger auf QObject abgeleitete Typen enthalten, prüft QVariant, ob die Typen verwandt sind und auf das gleiche Objekt zeigen.
Das Ergebnis der Funktion wird nicht durch das Ergebnis von QVariant::isNull beeinflusst, was bedeutet, dass zwei Werte gleich sein können, auch wenn einer von ihnen null ist und der andere nicht.
QDataStream &operator>>(QDataStream &s, QVariant &p)
Liest eine Variante p aus dem Stream s.
Hinweis: Wenn der Stream Typen enthält, die nicht zu den eingebauten Typen gehören (siehe QMetaType::Type), müssen diese Typen mit qRegisterMetaType() oder QMetaType::registerType() registriert werden, bevor die Variante ordnungsgemäß geladen werden kann. Wenn ein nicht registrierter Typ gefunden wird, setzt QVariant das Korrupt-Flag im Stream, stoppt die Verarbeitung und gibt eine Warnung aus. Zum Beispiel würde für QList<int> folgendes ausgegeben:
QVariant::load: unbekannter Benutzertyp mit dem Namen QList<int>
Siehe auch Format der QDataStream-Operatoren.
© 2025 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.