QJSValue Class

Die Klasse QJSValue dient als Container für Qt/JavaScript-Datentypen. Mehr...

Kopfzeile: #include <QJSValue>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml

Öffentliche Typen

enum ErrorType { GenericError, RangeError, ReferenceError, SyntaxError, TypeError, URIError }
enum ObjectConversionBehavior { ConvertJSObjects, RetainJSObjects }
enum SpecialValue { UndefinedValue, NullValue }

Öffentliche Funktionen

QJSValue(QJSValue::SpecialValue value = UndefinedValue)
QJSValue(bool value)
QJSValue(const QLatin1String &value)
QJSValue(const QString &value)
QJSValue(const char *value)
QJSValue(double value)
QJSValue(int value)
QJSValue(uint value)
QJSValue(const QJSValue &other)
QJSValue(QJSValue &&other)
~QJSValue()
QJSValue call(const QJSValueList &args = QJSValueList()) const
QJSValue callAsConstructor(const QJSValueList &args = QJSValueList()) const
QJSValue callWithInstance(const QJSValue &instance, const QJSValueList &args = QJSValueList()) const
bool deleteProperty(const QString &name)
bool equals(const QJSValue &other) const
QJSValue::ErrorType errorType() const
bool hasOwnProperty(const QString &name) const
bool hasProperty(const QString &name) const
bool isArray() const
bool isBool() const
bool isCallable() const
bool isDate() const
bool isError() const
bool isNull() const
bool isNumber() const
bool isObject() const
bool isQMetaObject() const
bool isQObject() const
bool isRegExp() const
bool isString() const
bool isUndefined() const
bool isUrl() const
(until 6.9) bool isVariant() const
QJSValue property(const QString &name) const
QJSValue property(quint32 arrayIndex) const
QJSValue prototype() const
void setProperty(const QString &name, const QJSValue &value)
void setProperty(quint32 arrayIndex, const QJSValue &value)
void setPrototype(const QJSValue &prototype)
bool strictlyEquals(const QJSValue &other) const
bool toBool() const
QDateTime toDateTime() const
qint32 toInt() const
double toNumber() const
QJSPrimitiveValue toPrimitive() const
const QMetaObject *toQMetaObject() const
QObject *toQObject() const
QString toString() const
quint32 toUInt() const
QVariant toVariant(QJSValue::ObjectConversionBehavior behavior) const
QVariant toVariant() const
QJSValue &operator=(QJSValue &&other)
QJSValue &operator=(const QJSValue &other)

Detaillierte Beschreibung

QJSValue unterstützt die im ECMA-262-Standard definierten Typen: Die primitiven Typen Undefined, Null, Boolean, Number und String, sowie die Typen Object und Array. Darüber hinaus gibt es eine integrierte Unterstützung für Qt/C++-Typen wie QVariant und QObject.

Für die objektbasierten Typen (einschließlich Date und RegExp) verwenden Sie die newT()-Funktionen in QJSEngine (z.B. QJSEngine::newObject()), um einen QJSValue des gewünschten Typs zu erstellen. Für die primitiven Typen verwenden Sie eine der QJSValue-Konstruktorüberladungen. Für andere Typen, z.B. registrierte Gadget-Typen wie QPoint, können Sie QJSEngine::toScriptValue verwenden.

Die Methoden mit dem Namen isT() (z.B. isBool(), isUndefined()) können verwendet werden, um zu testen, ob ein Wert von einem bestimmten Typ ist. Die Methoden mit dem Namen toT() (z.B. toBool(), toString()) können verwendet werden, um einen QJSValue in einen anderen Typ zu konvertieren. Sie können auch die generische Funktion qjsvalue_cast() verwenden.

Objektwerte haben null oder mehr Eigenschaften, die selbst QJSValues sind. Verwenden Sie setProperty(), um eine Eigenschaft eines Objekts zu setzen, und rufen Sie property() auf, um den Wert einer Eigenschaft abzurufen.

QJSEngine myEngine;
QJSValue myObject = myEngine.newObject();
QJSValue myOtherObject = myEngine.newObject();
myObject.setProperty("myChild", myOtherObject);
myObject.setProperty("name", "John Doe");

Wenn Sie über die Eigenschaften eines Skriptobjekts iterieren wollen, verwenden Sie die Klasse QJSValueIterator.

Objektwerte haben eine interne Eigenschaft prototype, auf die mit prototype() und setPrototype() zugegriffen werden kann.

Funktionsobjekte (Objekte, für die isCallable()) true zurückgibt) können durch den Aufruf von call() aufgerufen werden. Konstruktorfunktionen können verwendet werden, um neue Objekte durch den Aufruf von callAsConstructor() zu konstruieren.

Verwenden Sie equals() oder strictlyEquals(), um einen QJSValue mit einem anderen zu vergleichen.

Beachten Sie, dass ein QJSValue, für den isObject() wahr ist, nur eine Referenz auf ein tatsächliches Objekt enthält; das Kopieren des QJSValue kopiert nur die Objektreferenz, nicht das Objekt selbst. Wenn Sie ein Objekt klonen wollen (d.h. die Eigenschaften eines Objekts in ein anderes Objekt kopieren), können Sie dies mit Hilfe einer for-in -Anweisung im Skriptcode oder QJSValueIterator in C++ tun.

Arbeiten mit Arrays

Um ein Array mit QJSValue zu erstellen, verwenden Sie QJSEngine::newArray():

// Assumes that this class was declared in QML.
QJSValue jsArray = engine->newArray(3);

Um einzelne Elemente im Array zu setzen, verwenden Sie die Überladung setProperty(quint32 arrayIndex, const QJSValue &value). Zum Beispiel, um das obige Array mit ganzen Zahlen zu füllen:

for (int i = 0; i < 3; ++i) {
    jsArray.setProperty(i, QRandomGenerator::global().generate());
}

Um die Länge des Arrays zu bestimmen, greifen Sie auf die Eigenschaft "length" zu. Um auf Array-Elemente zuzugreifen, verwenden Sie die Überladung property(quint32 arrayIndex). Der folgende Code liest das Array, das wir oben erstellt haben, in eine Liste zurück:

QVector<int> integers;
const int length = jsArray.property("length").toInt();
for (int i = 0; i < length; ++i) {
    integers.append(jsArray.property(i).toInt());
}

Konvertierung in JSON

Es ist möglich, einen QJSValue in einen JSON-Typ zu konvertieren. Um zum Beispiel in ein Array zu konvertieren, verwenden Sie QJSEngine::fromScriptValue():

const QJsonValue jsonValue = engine.fromScriptValue<QJsonValue>(jsValue);
const QJsonArray jsonArray = jsonValue.toArray();

Siehe auch QJSEngine und QJSValueIterator.

Member-Typ-Dokumentation

enum QJSValue::ErrorType

Verwenden Sie diese Aufzählung für JavaScript sprachspezifische Typen von Fehlerobjekten.

Sie können nützlich sein, wenn die Emulation von Sprachmerkmalen in C++ die Verwendung von speziellen Ausnahmetypen erfordert. Außerdem können sie helfen, bestimmte typische Bedingungen klarer zu kommunizieren, anstatt eine generische JavaScript-Exception zu werfen. Beispielsweise kann es für Code, der sich mit Netzwerken und Ressourcenlokatoren befasst, nützlich sein, Fehler im Zusammenhang mit fehlerhaften Lokatoren über den Typ URIError zu verbreiten.

KonstanteWertBeschreibung
QJSValue::GenericError1Ein generisches Error-Objekt, aber nicht von einem bestimmten Subtyp.
QJSValue::RangeError3Ein Wert stimmt nicht mit der erwarteten Menge oder dem erwarteten Bereich überein.
QJSValue::ReferenceError4Eine nicht existierende Variable wurde referenziert.
QJSValue::SyntaxError5Es wurde ein ungültiges Token oder eine ungültige Tokenfolge angetroffen, die nicht mit der Syntax der Sprache übereinstimmt.
QJSValue::TypeError6Ein Operand oder ein Argument ist mit dem erwarteten Typ nicht kompatibel.
QJSValue::URIError7Eine URI-Behandlungsfunktion wurde falsch verwendet oder der angegebene URI ist falsch geformt.

enum QJSValue::ObjectConversionBehavior

Diese Aufzählung wird verwendet, um festzulegen, wie JavaScript-Objekte und -Symbole ohne einen entsprechenden nativen Qt-Typ bei der Konvertierung nach QVariant behandelt werden sollen.

KonstanteWertBeschreibung
QJSValue::ConvertJSObjects0Es wird eine bestmögliche, möglicherweise verlustbehaftete, Konvertierung versucht. Symbole werden nach QString konvertiert.
QJSValue::RetainJSObjects1Der Wert wird als QJSValue in QVariant verpackt beibehalten.

enum QJSValue::SpecialValue

Diese Aufzählung wird verwendet, um einen einwertigen Typ anzugeben.

KonstanteWertBeschreibung
QJSValue::UndefinedValue1Ein undefinierter Wert.
QJSValue::NullValue0Ein Nullwert.

Dokumentation der Mitgliedsfunktionen

QJSValue::QJSValue(QJSValue::SpecialValue value = UndefinedValue)

Konstruiert einen neuen QJSValue mit einer speziellen value.

QJSValue::QJSValue(bool value)

Konstruiert einen neuen QJSValue mit einem boolean value.

QJSValue::QJSValue(const QLatin1String &value)

Konstruiert einen neuen QJSValue mit einem String value.

QJSValue::QJSValue(const QString &value)

Konstruiert einen neuen QJSValue mit einem String value.

QJSValue::QJSValue(const char *value)

Konstruiert einen neuen QJSValue mit einem String value.

QJSValue::QJSValue(double value)

Konstruiert einen neuen QJSValue mit einer Nummer value.

QJSValue::QJSValue(int value)

Konstruiert einen neuen QJSValue mit einer Nummer value.

QJSValue::QJSValue(uint value)

Konstruiert einen neuen QJSValue mit einer Nummer value.

QJSValue::QJSValue(const QJSValue &other)

Konstruiert einen neuen QJSValue, der eine Kopie von other ist.

Beachten Sie, dass, wenn other ein Objekt ist (d. h. isObject() würde true zurückgeben), nur ein Verweis auf das zugrunde liegende Objekt in den neuen Skriptwert kopiert wird (d. h. das Objekt selbst wird nicht kopiert).

QJSValue::QJSValue(QJSValue &&other)

Konstruktor verschieben. Verschiebt von other in dieses QJSValue-Objekt.

[noexcept] QJSValue::~QJSValue()

Zerstört diese QJSValue.

QJSValue QJSValue::call(const QJSValueList &args = QJSValueList()) const

Ruft diese QJSValue als Funktion auf, wobei args als Argumente an die Funktion übergeben und das globalObject() als "this"-Objekt verwendet wird. Gibt den von der Funktion zurückgegebenen Wert zurück.

Wenn diese QJSValue nicht aufrufbar ist, tut call() nichts und gibt einen undefinierten QJSValue zurück.

Der Aufruf von call() kann eine Ausnahme in der Skript-Engine auslösen; in diesem Fall gibt call() den Wert zurück, der ausgelöst wurde (typischerweise ein Error -Objekt). Sie können isError() mit dem Rückgabewert aufrufen, um festzustellen, ob eine Ausnahme aufgetreten ist.

Siehe auch isCallable(), callWithInstance(), und callAsConstructor().

QJSValue QJSValue::callAsConstructor(const QJSValueList &args = QJSValueList()) const

Erstellt ein neues Object und ruft dieses QJSValue als Konstruktor auf, wobei das erstellte Objekt als `this'-Objekt verwendet und args als Argumente übergeben werden. Wenn der Rückgabewert des Konstruktoraufrufs ein Objekt ist, dann wird dieses Objekt zurückgegeben; andernfalls wird das standardmäßig konstruierte Objekt zurückgegeben.

Wenn diese QJSValue keine Funktion ist, tut callAsConstructor() nichts und gibt ein undefiniertes QJSValue zurück.

Der Aufruf dieser Funktion kann eine Ausnahme in der Skript-Engine auslösen; in diesem Fall wird der Wert zurückgegeben, der ausgelöst wurde (normalerweise ein Error Objekt). Sie können isError() mit dem Rückgabewert aufrufen, um festzustellen, ob eine Ausnahme aufgetreten ist.

Siehe auch call() und QJSEngine::newObject().

QJSValue QJSValue::callWithInstance(const QJSValue &instance, const QJSValueList &args = QJSValueList()) const

Ruft diese QJSValue als Funktion auf, wobei instance als `this'-Objekt im Funktionsaufruf verwendet wird und args als Argumente an die Funktion übergeben werden. Gibt den von der Funktion zurückgegebenen Wert zurück.

Wenn diese QJSValue keine Funktion ist, tut call() nichts und gibt ein undefiniertes QJSValue zurück.

Beachten Sie, dass, wenn instance kein Objekt ist, das globale Objekt (siehe QJSEngine::globalObject()) als "dieses" Objekt verwendet wird.

Der Aufruf von call() kann zu einer Ausnahme in der Script-Engine führen; in diesem Fall gibt call() den Wert zurück, der ausgelöst wurde (normalerweise ein Error Objekt). Sie können isError() mit dem Rückgabewert aufrufen, um festzustellen, ob eine Ausnahme aufgetreten ist.

Siehe auch call().

bool QJSValue::deleteProperty(const QString &name)

Versucht, die Eigenschaft dieses Objekts mit der angegebenen name zu löschen. Gibt true zurück, wenn die Eigenschaft gelöscht wurde, andernfalls false.

Das Verhalten dieser Funktion ist konsistent mit dem JavaScript-Löschoperator. Im Besonderen:

  • Nicht-konfigurierbare Eigenschaften können nicht gelöscht werden.
  • Diese Funktion gibt true zurück, auch wenn dieses Objekt keine Eigenschaft der angegebenen name hat (d.h. nicht vorhandene Eigenschaften sind "trivial löschbar").
  • Wenn dieses Objekt keine eigene Eigenschaft der angegebenen name hat, ein Objekt in der prototype()-Kette aber schon, wird die Eigenschaft des Prototyp-Objekts nicht gelöscht, und diese Funktion gibt true zurück.

Siehe auch setProperty() und hasOwnProperty().

bool QJSValue::equals(const QJSValue &other) const

Gibt true zurück, wenn diese QJSValue gleich other ist, andernfalls false. Der Vergleich folgt dem in ECMA-262 Abschnitt 11.9.3, "The Abstract Equality Comparison Algorithm" beschriebenen Verhalten.

Diese Funktion kann auch dann true zurückgeben, wenn der Typ dieses QJSValue vom Typ des other Wertes abweicht, d.h. der Vergleich ist nicht strikt. Der Vergleich der Zahl 9 mit der Zeichenkette "9" ergibt beispielsweise true; der Vergleich eines undefinierten Wertes mit einem Null-Wert ergibt true; der Vergleich eines Number -Objekts, dessen primitiver Wert 6 ist, mit einem String -Objekt, dessen primitiver Wert "6" ist, ergibt true; und der Vergleich der Zahl 1 mit dem booleschen Wert true ergibt true. Wenn Sie einen Vergleich ohne eine solche implizite Wertumwandlung durchführen möchten, verwenden Sie strictlyEquals().

Beachten Sie, dass der Aufruf dieser Funktion Nebenwirkungen auf die Skript-Engine hat, wenn es sich bei QJSValue oder dem Wert other um Objekte handelt, da die Engine die Funktion valueOf() des Objekts (und möglicherweise toString()) aufruft, um das Objekt in einen primitiven Wert umzuwandeln (was möglicherweise zu einer nicht abgefangenen Skript-Exception führt).

Siehe auch strictlyEquals().

QJSValue::ErrorType QJSValue::errorType() const

Gibt den Fehlertyp zurück, den dieses QJSValue repräsentiert, wenn es ein Error-Objekt ist. Andernfalls wird NoError."

Siehe auch isError() und QJSEngine - Script Exceptions.

bool QJSValue::hasOwnProperty(const QString &name) const

Gibt true zurück, wenn dieses Objekt eine eigene (nicht vom Prototyp geerbte) Eigenschaft der angegebenen name hat, andernfalls false.

Siehe auch property() und hasProperty().

bool QJSValue::hasProperty(const QString &name) const

Gibt true zurück, wenn dieses Objekt eine Eigenschaft mit der angegebenen name hat, andernfalls false.

Siehe auch property() und hasOwnProperty().

bool QJSValue::isArray() const

Gibt true zurück, wenn dieses QJSValue ein Objekt der Klasse Array ist; andernfalls wird false zurückgegeben.

Siehe auch QJSEngine::newArray().

bool QJSValue::isBool() const

Gibt true zurück, wenn diese QJSValue vom primitiven Typ Boolean ist; andernfalls wird false zurückgegeben.

Siehe auch toBool().

bool QJSValue::isCallable() const

Gibt true zurück, wenn diese QJSValue eine Funktion ist, andernfalls false.

Siehe auch call().

bool QJSValue::isDate() const

Gibt true zurück, wenn dieses QJSValue ein Objekt der Klasse Date ist; andernfalls wird false zurückgegeben.

bool QJSValue::isError() const

Gibt true zurück, wenn dieses QJSValue ein Objekt der Klasse Error ist; andernfalls wird false zurückgegeben.

Siehe auch errorType() und QJSEngine - Script Exceptions.

bool QJSValue::isNull() const

Gibt true zurück, wenn diese QJSValue vom primitiven Typ Null ist; andernfalls wird false zurückgegeben.

bool QJSValue::isNumber() const

Gibt true zurück, wenn diese QJSValue vom primitiven Typ Number ist; andernfalls wird false zurückgegeben.

Siehe auch toNumber().

bool QJSValue::isObject() const

Gibt true zurück, wenn diese QJSValue vom Typ Object ist; andernfalls wird false zurückgegeben.

Beachten Sie, dass Funktionswerte, Variantenwerte und QObject Werte Objekte sind, so dass diese Funktion für solche Werte true zurückgibt.

Siehe auch QJSEngine::newObject().

bool QJSValue::isQMetaObject() const

Gibt true zurück, wenn dieses QJSValue ein QMetaObject ist; andernfalls wird false zurückgegeben.

Siehe auch toQMetaObject() und QJSEngine::newQMetaObject().

bool QJSValue::isQObject() const

Gibt true zurück, wenn dieses QJSValue ein QObject ist; andernfalls wird false zurückgegeben.

Hinweis: Diese Funktion gibt true zurück, auch wenn die QObject, die diese QJSValue umschließt, gelöscht wurde.

Siehe auch toQObject() und QJSEngine::newQObject().

bool QJSValue::isRegExp() const

Gibt true zurück, wenn diese QJSValue ein Objekt der Klasse RegExp ist; andernfalls wird false zurückgegeben.

bool QJSValue::isString() const

Gibt true zurück, wenn diese QJSValue vom primitiven Typ String ist; andernfalls wird false zurückgegeben.

Siehe auch toString().

bool QJSValue::isUndefined() const

Gibt true zurück, wenn diese QJSValue vom primitiven Typ Undefined ist oder wenn der verwaltete Wert gelöscht wurde (durch Löschen der Engine). Andernfalls wird false zurückgegeben.

bool QJSValue::isUrl() const

Gibt true zurück, wenn diese QJSValue ein Objekt der Klasse URL JavaScript ist; andernfalls wird false zurückgegeben.

Hinweis: Bei einer QJSValue, die eine QUrl enthält, gibt diese Funktion false zurück. toVariant().value<QUrl>() funktioniert jedoch in beiden Fällen.

[until 6.9] bool QJSValue::isVariant() const

Diese Funktion soll in Version 6.9 veraltet sein.

Gibt true zurück, wenn diese QJSValue ein Variantenwert ist; andernfalls wird false zurückgegeben.

Warnung: Diese Funktion kann zu unerwarteten Ergebnissen führen. Ein Variantenwert wird von QJSEngine nur in einer sehr begrenzten Anzahl von Fällen konstruiert. Dies war vor Qt 5.14 anders, wo QJSEngine::toScriptValue sie für mehr Typen anstelle der entsprechenden ECMAScript-Typen erstellt hat. Sie können ein gültiges QVariant über toVariant für viele Werte erhalten, für die isVariant false zurückgibt.

Siehe auch toVariant().

QJSValue QJSValue::property(const QString &name) const

Gibt den Wert der Eigenschaft von QJSValue mit der angegebenen name zurück. Wenn keine solche Eigenschaft existiert, wird ein undefinierter QJSValue zurückgegeben.

Wenn die Eigenschaft mit einer Getter-Funktion implementiert ist (d. h. das PropertyGetter-Flag gesetzt ist), hat der Aufruf von property() Nebeneffekte auf die Skript-Engine, da die Getter-Funktion aufgerufen wird (was möglicherweise zu einer nicht abgefangenen Skript-Exception führt). Wenn eine Ausnahme aufgetreten ist, gibt property() den Wert zurück, der ausgelöst wurde (typischerweise ein Error Objekt).

Um auf Array-Elemente zuzugreifen, verwenden Sie stattdessen die Überladung setProperty(quint32 arrayIndex, const QJSValue &value).

Siehe auch setProperty(), hasProperty(), und QJSValueIterator.

QJSValue QJSValue::property(quint32 arrayIndex) const

Dies ist eine überladene Funktion.

Gibt die Eigenschaft unter der angegebenen Adresse arrayIndex zurück.

Der Zugriff auf Elemente in einem Array ist auf zwei Arten möglich. Die erste ist die Verwendung des Array-Index als Eigenschaftsname:

qDebug() << jsValueArray.property(QLatin1String("4")).toString();

Die zweite ist die Verwendung der Überladung, die einen Index annimmt:

qDebug() << jsValueArray.property(4).toString();

Beide Ansätze führen zum gleichen Ergebnis, mit der Ausnahme, dass die zweite Methode

  • Einfacher zu verwenden ist (kann direkt eine Ganzzahl verwenden)
  • schneller ist (keine Konvertierung in Integer)

Wenn QJSValue kein Array-Objekt ist, verhält sich diese Funktion so, als ob property() mit der String-Repräsentation von arrayIndex aufgerufen würde.

QJSValue QJSValue::prototype() const

Wenn QJSValue ein Objekt ist, wird der interne Prototyp (__proto__ property) dieses Objekts zurückgegeben; andernfalls wird ein undefinierter QJSValue zurückgegeben.

Siehe auch setPrototype() und isObject().

void QJSValue::setProperty(const QString &name, const QJSValue &value)

Setzt den Wert der Eigenschaft von QJSValue mit dem angegebenen name auf den angegebenen value.

Wenn diese QJSValue kein Objekt ist, führt diese Funktion nichts aus.

Wenn diese QJSValue nicht bereits eine Eigenschaft mit dem Namen name hat, wird eine neue Eigenschaft erstellt.

Um Array-Elemente zu ändern, verwenden Sie stattdessen die Überladung setProperty(quint32 arrayIndex, const QJSValue &value).

Siehe auch property() und deleteProperty().

void QJSValue::setProperty(quint32 arrayIndex, const QJSValue &value)

Dies ist eine überladene Funktion.

Setzt die Eigenschaft an der angegebenen arrayIndex auf die angegebene value.

Es ist möglich, Elemente in einem Array auf zwei Arten zu ändern. Die erste ist die Verwendung des Array-Index als Eigenschaftsname:

jsValueArray.setProperty(QLatin1String("4"), value);

Die zweite ist die Verwendung der Überladung, die einen Index annimmt:

jsValueArray.setProperty(4, value);

Beide Ansätze führen zum gleichen Ergebnis, mit dem Unterschied, dass der zweite Weg einfacher ist:

  • Einfacher zu verwenden ist (kann direkt eine Ganzzahl verwenden)
  • schneller ist (keine Konvertierung in Integer)

Wenn QJSValue kein Array-Objekt ist, verhält sich diese Funktion so, als ob setProperty() mit der String-Repräsentation von arrayIndex aufgerufen würde.

Siehe auch property(quint32 arrayIndex) und Working With Arrays.

void QJSValue::setPrototype(const QJSValue &prototype)

Wenn QJSValue ein Objekt ist, wird der interne Prototyp (Eigenschaft__proto__ ) dieses Objekts auf prototype gesetzt; wenn QJSValue null ist, wird der Prototyp auf null gesetzt; andernfalls geschieht nichts.

Der interne Prototyp sollte nicht mit der öffentlichen Eigenschaft mit dem Namen "prototype" verwechselt werden; der öffentliche Prototyp wird normalerweise nur bei Funktionen gesetzt, die als Konstruktoren fungieren.

Siehe auch prototype() und isObject().

bool QJSValue::strictlyEquals(const QJSValue &other) const

Gibt true zurück, wenn QJSValue unter Verwendung eines strengen Vergleichs (keine Konvertierung) gleich other ist, andernfalls wird false zurückgegeben. Der Vergleich folgt dem in ECMA-262 Abschnitt 11.9.6, "Der strikte Gleichheitsvergleichsalgorithmus" beschriebenen Verhalten.

Wenn der Typ dieses QJSValue sich vom Typ des other Wertes unterscheidet, gibt diese Funktion false zurück. Wenn die Typen gleich sind, hängt das Ergebnis vom Typ ab, wie in der folgenden Tabelle dargestellt:

TypErgebnis
Undefiniertwahr
Nullwahr
Boolescher Wertwahr, wenn beide Werte wahr sind, sonst falsch
Zahlfalse, wenn einer der beiden Werte NaN (Not-a-Number) ist; true, wenn die Werte gleich sind, sonst false
Zeichenkettewahr, wenn beide Werte genau die gleiche Zeichenfolge sind, sonst falsch
Objektwahr, wenn beide Werte auf dasselbe Objekt verweisen, andernfalls falsch

Siehe auch equals().

bool QJSValue::toBool() const

Gibt den booleschen Wert dieser QJSValue zurück, wobei die in ECMA-262 Abschnitt 9.2, "ToBoolean" beschriebenen Konvertierungsregeln verwendet werden.

Wenn QJSValue ein Objekt ist, hat der Aufruf dieser Funktion Nebeneffekte auf die Skript-Engine, da die Engine die valueOf()-Funktion des Objekts (und möglicherweise toString()) aufruft, um das Objekt in einen primitiven Wert zu konvertieren (was möglicherweise zu einer nicht abgefangenen Skript-Exception führt).

Siehe auch isBool().

QDateTime QJSValue::toDateTime() const

Gibt eine QDateTime Darstellung dieses Wertes in Ortszeit zurück. Wenn QJSValue kein Datum ist oder der Wert des Datums NaN (Not-a-Number) ist, wird ein ungültiges QDateTime zurückgegeben.

Siehe auch isDate().

qint32 QJSValue::toInt() const

Gibt den vorzeichenbehafteten 32-Bit-Integer-Wert dieser QJSValue zurück, unter Verwendung der in ECMA-262 Abschnitt 9.5, "ToInt32", beschriebenen Konvertierungsregeln.

Wenn QJSValue ein Objekt ist, hat der Aufruf dieser Funktion Nebeneffekte auf die Skript-Engine, da die Engine die valueOf()-Funktion des Objekts (und möglicherweise toString()) aufruft, um das Objekt in einen primitiven Wert zu konvertieren (was möglicherweise zu einer nicht abgefangenen Skript-Exception führt).

Siehe auch toNumber() und toUInt().

double QJSValue::toNumber() const

Gibt den Zahlenwert dieser QJSValue zurück, wie in ECMA-262 Abschnitt 9.3, "ToNumber" definiert.

Wenn QJSValue ein Objekt ist, hat der Aufruf dieser Funktion Nebenwirkungen auf die Script-Engine, da die Engine die Funktion valueOf() des Objekts (und möglicherweise toString()) aufruft, um das Objekt in einen primitiven Wert umzuwandeln (was möglicherweise zu einer nicht abgefangenen Script-Exception führt).

Siehe auch isNumber(), toInt(), und toUInt().

QJSPrimitiveValue QJSValue::toPrimitive() const

Konvertiert den Wert in eine QJSPrimitiveValue. Wenn der Wert einen von QJSPrimitiveValue unterstützten Typ enthält, wird der Wert kopiert. Andernfalls wird der Wert in eine Zeichenkette konvertiert, und die Zeichenkette wird in QJSPrimitiveValue gespeichert.

Hinweis: Die Konvertierung eines verwalteten Wertes in eine Zeichenkette kann eine Ausnahme auslösen. Insbesondere können Symbole nicht in Strings umgewandelt werden, oder eine benutzerdefinierte toString()-Methode kann eine Ausnahme auslösen. In diesem Fall ist das Ergebnis ein undefinierter Wert und die Engine gibt nach der Konvertierung einen Fehler aus.

const QMetaObject *QJSValue::toQMetaObject() const

* Wenn QJSValue ein QMetaObject ist, wird der Zeiger QMetaObject zurückgegeben, * den QJSValue darstellt; andernfalls wird nullptr zurückgegeben. * *

Siehe auch isQMetaObject().

QObject *QJSValue::toQObject() const

Wenn dieses QJSValue ein QObject ist, wird der QObject -Zeiger zurückgegeben, den QJSValue repräsentiert; andernfalls wird nullptr zurückgegeben.

Wenn die QObject, die diese QJSValue umschließt, gelöscht wurde, gibt diese Funktion nullptr zurück (d.h. es ist möglich, dass toQObject() nullptr zurückgibt, auch wenn isQObject() true zurückgibt).

Siehe auch isQObject().

QString QJSValue::toString() const

Gibt den String-Wert dieses QJSValue zurück, wie in ECMA-262 Abschnitt 9.8, "ToString" definiert.

Wenn QJSValue ein Objekt ist, hat der Aufruf dieser Funktion Nebeneffekte auf die Skript-Engine, da die Engine die Funktion toString() des Objekts (und möglicherweise valueOf()) aufruft, um das Objekt in einen primitiven Wert zu konvertieren (was möglicherweise zu einer nicht abgefangenen Skript-Exception führt).

Siehe auch isString().

quint32 QJSValue::toUInt() const

Gibt den vorzeichenlosen 32-Bit-Integer-Wert dieser QJSValue zurück, wobei die in ECMA-262 Abschnitt 9.6, "ToUint32", beschriebenen Konvertierungsregeln verwendet werden.

Wenn QJSValue ein Objekt ist, hat der Aufruf dieser Funktion Nebeneffekte auf die Skript-Engine, da die Engine die valueOf()-Funktion des Objekts (und möglicherweise toString()) aufruft, um das Objekt in einen primitiven Wert zu konvertieren (was möglicherweise zu einer nicht abgefangenen Skript-Exception führt).

Siehe auch toNumber() und toInt().

QVariant QJSValue::toVariant(QJSValue::ObjectConversionBehavior behavior) const

Gibt den QVariant Wert dieses QJSValue zurück, wenn er in einen QVariant konvertiert werden kann; andernfalls wird ein ungültiger QVariant zurückgegeben. Einige JavaScript-Typen und -Objekte haben native Ausdrücke in Qt. Diese werden in ihre nativen Ausdrücke konvertiert. Zum Beispiel:

Eingabe TypErgebnis
UndefiniertEine ungültige QVariant.
NullEine QVariant, die einen Null-Zeiger enthält (QMetaType::Nullptr).
Boolescher WertEine QVariant, die den Wert eines booleschen Wertes enthält.
ZahlEine QVariant, die den Wert der Zahl enthält.
ZeichenketteEine QVariant, die den Wert der Zeichenkette enthält.
QVariant ObjektDas Ergebnis ist der QVariant Wert des Objekts (keine Konvertierung).
QObject ObjektEin QVariant, das einen Zeiger auf das QObject enthält.
Datum ObjektEin QVariant, das den Datumswert enthält (toDateTime()).
RegularExpression ObjektA QVariant mit dem Wert des regulären Ausdrucks.

Für andere Typen ist der Parameter behavior relevant. Wenn ConvertJSObjects angegeben wird, wird eine bestmögliche, aber möglicherweise verlustbehaftete Konvertierung versucht. Allgemeine JavaScript-Objekte werden in QVariantMap konvertiert. JavaScript-Arrays werden in QVariantList umgewandelt. Jede Eigenschaft oder jedes Element wird rekursiv in QVariant umgewandelt; zyklische Verweise werden nicht beachtet. JavaScript-Funktionsobjekte werden fallen gelassen. Wenn RetainJSObjects angegeben wird, wird QJSValue über QVariant::fromValue() in ein QVariant umgewandelt. Die resultierende Umwandlung ist verlustfrei, aber die interne Struktur der Objekte ist nicht unmittelbar zugänglich.

Siehe auch isVariant().

QVariant QJSValue::toVariant() const

Dies ist eine überladene Funktion.

Gibt toVariant(ConvertJSObjects) zurück.

Siehe auch isVariant().

QJSValue &QJSValue::operator=(QJSValue &&other)

Verschieben - weist other diesem QJSValue Objekt zu.

QJSValue &QJSValue::operator=(const QJSValue &other)

Weist den Wert other diesem QJSValue zu.

Beachten Sie, dass, wenn other ein Objekt ist (isObject() gibt true zurück), nur ein Verweis auf das zugrunde liegende Objekt zugewiesen wird; das Objekt selbst wird nicht kopiert.

Verwandte Nicht-Mitglieder

QJSValueList

Dies ist eine Typisierung für ein QList<QJSValue>.

© 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.