Auf dieser Seite

QJSValue Class

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

Header: #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
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)

Ausführliche 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 wird eine integrierte Unterstützung für Qt/C++-Typen wie „ QVariant “ und „ QObject “ bereitgestellt.

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 Überladungen des „QJSValue“-Konstruktors. Für andere Typen, z. B. registrierte Gadget-Typen wie QPoint, können Sie QJSEngine::toScriptValue verwenden.

Mit den Methoden namens isT() (z. B. isBool(), isUndefined()) lässt sich prüfen, ob ein Wert von einem bestimmten Typ ist. Mit den Methoden namens toT() (z. B. toBool(), toString()) lässt sich ein QJSValue in einen anderen Typ konvertieren. Sie können auch die generische Funktion `qjsvalue_cast()` verwenden.

Objektwerte verfügen über null oder mehr Eigenschaften, die selbst QJSValues sind. Verwenden Sie „ setProperty()“, um eine Eigenschaft eines Objekts festzulegen, 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 die Eigenschaften eines Skript-Objekts durchlaufen möchten, verwenden Sie die Klasse ` QJSValueIterator `.

Objektwerte verfügen über eine interne prototype -Eigenschaft, auf die mit prototype() und setPrototype() zugegriffen werden kann.

Funktionsobjekte (Objekte, für die ` isCallable()` `true` zurückgibt) können durch Aufruf von ` call()` aufgerufen werden. Konstruktorfunktionen können zum Erstellen neuer Objekte durch Aufruf von ` callAsConstructor()` verwendet werden.

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

Beachten Sie, dass ein `QJSValue`, für den ` isObject()` wahr ist, lediglich eine Referenz auf ein tatsächliches Objekt enthält; beim Kopieren des `QJSValue` wird nur die Objektreferenz kopiert, nicht das Objekt selbst. Wenn Sie ein Objekt klonen möchten (d. h. die Eigenschaften eines Objekts in ein anderes Objekt kopieren möchten), können Sie dies mithilfe einer for-in -Anweisung im Skriptcode oder mit 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 von ` setProperty(quint32 arrayIndex, const QJSValue &value)`. Um beispielsweise das obige Array mit Ganzzahlen zu füllen:

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

Um die Länge des Arrays zu ermitteln, greifen Sie auf die Eigenschaft „ "length" “ zu. Um auf Array-Elemente zuzugreifen, verwenden Sie die Überladung „ property(quint32 arrayIndex)“. Der folgende Code liest das oben erstellte Array wieder in eine Liste ein:

QList<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 beispielsweise 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 “.

Dokumentation zu Mitgliedstypen

enum QJSValue::ErrorType

Verwenden Sie diese Enumeration für JavaScript-spezifische Typen von Fehlerobjekten.

Sie können nützlich sein, wenn die Emulation von Sprachfunktionen in C++ die Verwendung spezieller Ausnahmetypen erfordert. Darüber hinaus können sie dazu beitragen, bestimmte typische Zustände klarer zu kommunizieren, anstatt eine generische JavaScript-Ausnahme auszulösen. Beispielsweise kann es für Code, der sich mit Netzwerken und Ressourcenlokatoren befasst, sinnvoll sein, Fehler im Zusammenhang mit fehlerhaften Lokatoren mithilfe des Typs `URIError` weiterzugeben.

KonstanteWertBeschreibung
QJSValue::GenericError1Ein generisches „Error“-Objekt, jedoch nicht eines bestimmten Untertyps.
QJSValue::RangeError3Ein Wert entsprach nicht dem erwarteten Satz oder Bereich.
QJSValue::ReferenceError4Es wurde auf eine nicht vorhandene Variable verwiesen.
QJSValue::SyntaxError5Es wurde ein ungültiges Token oder eine ungültige Folge von Tokens gefunden, die nicht der Syntax der Sprache entspricht.
QJSValue::TypeError6Ein Operand oder ein Argument ist mit dem erwarteten Typ nicht kompatibel.
QJSValue::URIError7Eine URI-Verarbeitungsfunktion wurde falsch verwendet oder die angegebene URI ist fehlerhaft.

enum QJSValue::ObjectConversionBehavior

Diese Enumeration dient dazu, festzulegen, wie JavaScript-Objekte und -Symbole, für die es keinen entsprechenden nativen Qt-Typ gibt, bei der Konvertierung in „ QVariant “ behandelt werden sollen.

KonstanteWertBeschreibung
QJSValue::ConvertJSObjects0Es wird eine bestmögliche, möglicherweise verlustbehaftete Konvertierung versucht. Symbole werden in ` QString` konvertiert.
QJSValue::RetainJSObjects1Der Wert wird als „ QJSValue “ beibehalten, umhüllt von „ QVariant “.

enum QJSValue::SpecialValue

Diese Enumeration wird verwendet, um einen einwertigen Typ anzugeben.

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

Dokumentation zu Mitgliedsfunktionen

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

Erstellt einen neuen QJSValue mit einem speziellen „ value “.

QJSValue::QJSValue(bool value)

Erstellt einen neuen QJSValue mit einem booleschen Wert „ value “.

QJSValue::QJSValue(const QLatin1String &value)

Erstellt einen neuen QJSValue mit dem String- value.

QJSValue::QJSValue(const QString &value)

Erstellt einen neuen QJSValue mit dem String- value.

QJSValue::QJSValue(const char *value)

Erstellt einen neuen QJSValue mit dem String- value.

QJSValue::QJSValue(double value)

Erzeugt einen neuen QJSValue mit einem Zahlen value.

QJSValue::QJSValue(int value)

Erstellt einen neuen QJSValue mit einem Zahlen value.

QJSValue::QJSValue(uint value)

Erstellt einen neuen QJSValue mit einem Zahlen value.

QJSValue::QJSValue(const QJSValue &other)

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

Beachten Sie: Wenn „ other “ ein Objekt ist (d. h., „ isObject()“ würde „true“ zurückgeben), wird nur eine Referenz auf das zugrunde liegende Objekt in den neuen Skriptwert kopiert (d. h., das Objekt selbst wird nicht kopiert).

QJSValue::QJSValue(QJSValue &&other)

Move-Konstruktor. Überträgt Daten von other in dieses QJSValue-Objekt.

[noexcept] QJSValue::~QJSValue()

Löscht diese Seite: QJSValue.

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

Ruft „ QJSValue “ als Funktion auf, übergibt „ args “ als Argumente an die Funktion und verwendet „globalObject()“ als „this“-Objekt. Gibt den von der Funktion zurückgegebenen Wert zurück.

Wenn diese ` QJSValue ` nicht aufrufbar ist, führt `call()` keine Aktion aus und gibt ein undefiniertes ` 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 (in der Regel ein ` Error `-Objekt). Sie können ` isError()` auf den Rückgabewert anwenden, 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. Ist der Rückgabewert des Konstruktoraufrufs ein Objekt, wird dieses Objekt zurückgegeben; andernfalls wird das standardmäßig erstellte Objekt zurückgegeben.

Ist dieses ` QJSValue ` keine Funktion, führt `callAsConstructor()` keine Aktion aus 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 ausgelöste Wert (in der Regel ein ` Error `-Objekt) zurückgegeben. Sie können ` isError()` auf den Rückgabewert anwenden, 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 „ 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 „ QJSValue “ keine Funktion ist, führt „ call()“ keine Aktion aus und gibt ein undefiniertes „ QJSValue “ zurück.

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

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 (in der Regel ein ` Error `-Objekt). Sie können ` isError()` auf den Rückgabewert anwenden, um festzustellen, ob eine Ausnahme aufgetreten ist.

Siehe auch call().

bool QJSValue::deleteProperty(const QString &name)

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

Das Verhalten dieser Funktion entspricht dem JavaScript-Operator „delete“. Insbesondere gilt:

  • Nicht konfigurierbare Eigenschaften können nicht gelöscht werden.
  • Diese Funktion gibt „true“ zurück, selbst wenn dieses Objekt keine Eigenschaft mit dem angegebenen name besitzt (d. h., nicht vorhandene Eigenschaften sind „trivial löschbar“).
  • Wenn dieses Objekt keine eigene Eigenschaft mit dem angegebenen „ name “ besitzt, ein Objekt in der „ prototype()“-Kette jedoch 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 dieser 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 sich der Typ dieses ` QJSValue ` vom Typ des Wertes ` other ` unterscheidet; d. h., der Vergleich ist nicht streng. Beispielsweise liefert der Vergleich der Zahl 9 mit der Zeichenkette „9“ den Wert „true“; der Vergleich eines undefinierten Werts mit einem Nullwert liefert den Wert „true“; der Vergleich eines „ Number “-Objekts, dessen primitiver Wert 6 ist, mit einem „ String “-Objekt, dessen primitiver Wert „6“ ist, liefert den Wert „true“; und der Vergleich der Zahl 1 mit dem booleschen Wert „ true “ liefert den Wert „true“. Wenn Sie einen Vergleich ohne eine solche implizite Wertkonvertierung durchführen möchten, verwenden Sie „ strictlyEquals()“.

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

Siehe auch ` strictlyEquals()`.

QJSValue::ErrorType QJSValue::errorType() const

Gibt den Fehlertyp zurück, den diese QJSValue darstellt, sofern es sich um ein Error-Objekt handelt. Andernfalls wird Folgendes zurückgegeben 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 über den Prototyp geerbte) Eigenschaft mit dem angegebenen name besitzt; andernfalls wird „false“ zurückgegeben.

Siehe auch ` property()` und ` hasProperty()`.

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

Gibt „true“ zurück, wenn dieses Objekt eine Eigenschaft mit dem angegebenen Namen „ name “ besitzt, 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.

Hinweis: Diese Methode entspricht der Methode ` Array.isArray() ` in JavaScript. Sie können sie verwenden, um JavaScript-Arrays zu identifizieren, allerdings gibt sie für alle arrayähnlichen Objekte, die keine JavaScript-Arrays sind, „ false “ zurück. Dazu gehören QML-Listenobjekte sowohl für Werttypen als auch für Objekttypen, typisierte JavaScript-Arrays, JavaScript-ArrayBuffer-Objekte sowie alle benutzerdefinierten arrayähnlichen Objekte, die Sie möglicherweise selbst erstellen. All diese verhalten sich jedoch wie JavaScript-Arrays: Sie stellen im Allgemeinen dieselben Methoden bereit, und der Indexoperator kann auf sie angewendet werden. Daher ist es nicht ratsam, diese Methode zu verwenden, um festzustellen, ob ein Objekt wie ein Array verwendet werden könnte.

Siehe auch ` QJSEngine::newArray()`.

bool QJSValue::isBool() const

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

Siehe auch ` toBool()`.

bool QJSValue::isCallable() const

Gibt „true“ zurück, wenn dieses „ QJSValue “ eine Funktion ist, andernfalls „false“.

Siehe auch ` call()`.

bool QJSValue::isDate() const

Gibt „true“ zurück, wenn diese „ 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 dieser „ 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 gibt sie „false“ zurück.

Beachten Sie, dass Funktionswerte, Variant-Werte und „ QObject “-Werte Objekte sind, sodass 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 diese „ QJSValue “ eine „ QObject “ ist; andernfalls wird „false“ zurückgegeben.

Hinweis: Diese Funktion gibt auch dann „true“ zurück, wenn der „ QObject “, den dieser „ QJSValue “ umschließt, gelöscht wurde.

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

bool QJSValue::isRegExp() const

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

bool QJSValue::isString() const

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

Siehe auch ` toString()`.

bool QJSValue::isUndefined() const

Gibt „true“ zurück, wenn dieser „ 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 dieses ` QJSValue ` ein Objekt der JavaScript-Klasse `URL` ist; andernfalls gibt es „false“ zurück.

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

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

Gibt den Wert der Eigenschaft dieses „ QJSValue “ mit dem angegebenen „ name “ zurück. Falls keine solche Eigenschaft existiert, wird ein undefinierter „ QJSValue “ zurückgegeben.

Wenn die Eigenschaft mithilfe einer Getter-Funktion implementiert ist (d. h. das Flag „PropertyGetter“ ist gesetzt), hat der Aufruf von `property()` Nebenwirkungen auf die Skript-Engine, da die Getter-Funktion aufgerufen wird (was möglicherweise zu einer nicht abgefangenen Skript-Ausnahme führt). Wenn eine Ausnahme aufgetreten ist, gibt `property()` den Wert zurück, der ausgelöst wurde (in der Regel 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

Gibt die Eigenschaft an der angegebenen Position „ arrayIndex “ zurück.

Es gibt zwei Möglichkeiten, auf Elemente in einem Array zuzugreifen. Die erste besteht darin, den Array-Index als Eigenschaftsnamen zu verwenden:

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

Die zweite besteht darin, die Überladung zu verwenden, die einen Index akzeptiert:

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

Beide Ansätze führen zum gleichen Ergebnis, mit dem Unterschied, dass der letztere:

  • einfacher zu verwenden ist (eine Ganzzahl kann direkt verwendet werden)
  • schneller ist (keine Umwandlung in eine Ganzzahl)

Wenn dieses ` QJSValue ` kein Array-Objekt ist, verhält sich diese Funktion so, als wäre `property()` mit der Zeichenfolgendarstellung von ` arrayIndex` aufgerufen worden.

Dies ist eine überladene Funktion.

QJSValue QJSValue::prototype() const

Wenn dieses QJSValue ein Objekt ist, gibt die Methode den internen Prototyp (Eigenschaft „__proto__ “) dieses Objekts zurück; andernfalls gibt sie „undefined“ QJSValue zurück.

Siehe auch setPrototype() und isObject().

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

Setzt den Wert der Eigenschaft dieses „ QJSValue “ mit dem angegebenen „ name “ auf den angegebenen „ value “.

Wenn dieses „ QJSValue “ kein Objekt ist, führt diese Funktion keine Aktion aus.

Wenn dieses ` QJSValue ` noch keine Eigenschaft mit dem Namen ` name` besitzt, wird eine neue Eigenschaft erstellt.

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

Siehe auch „ property()“ und „ deleteProperty()“.

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

Setzt die Eigenschaft unter dem angegebenen Index „ arrayIndex “ auf den angegebenen Wert „ value “.

Es gibt zwei Möglichkeiten, Elemente in einem Array zu ändern. Die erste besteht darin, den Array-Index als Eigenschaftsnamen zu verwenden:

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

Die zweite besteht darin, die Überladung zu verwenden, die einen Index akzeptiert:

jsValueArray.setProperty(4, value);

Beide Ansätze führen zum gleichen Ergebnis, mit dem Unterschied, dass letzterer:

  • einfacher zu verwenden ist (eine Ganzzahl kann direkt verwendet werden)
  • schneller ist (keine Umwandlung in eine Ganzzahl)

Wenn dieses ` QJSValue ` kein Array-Objekt ist, verhält sich diese Funktion so, als wäre `setProperty()` mit der Zeichenfolgendarstellung von ` arrayIndex` aufgerufen worden.

Dies ist eine überladene Funktion.

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; ist „ QJSValue “ null, wird der Prototyp auf null gesetzt; andernfalls erfolgt keine Änderung.

Der interne Prototyp ist nicht zu verwechseln mit der öffentlichen Eigenschaft namens „prototype“; der öffentliche Prototyp wird in der Regel nur für Funktionen gesetzt, die als Konstruktoren fungieren.

Siehe auch prototype() und isObject().

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

Gibt „true“ zurück, wenn dieser Wert QJSValue unter strikter Vergleichsregel (ohne Konvertierung) gleich other ist; andernfalls wird „false“ zurückgegeben. Der Vergleich folgt dem in ECMA-262, Abschnitt 11.9.6, „Der Algorithmus für den strikten Gleichheitsvergleich“ beschriebenen Verhalten.

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

TypErgebnis
Undefinierttrue
Nullwahr
Boolescher Wertwahr, wenn beide Werte wahr oder beide falsch sind, andernfalls falsch
Zahlfalse, wenn einer der Werte NaN (Not-a-Number) ist; true, wenn die Werte gleich sind, andernfalls false
Zeichenkettewahr, wenn beide Werte genau dieselbe Zeichenfolge sind, andernfalls falsch
Objektwahr, wenn sich beide Werte auf dasselbe Objekt beziehen, andernfalls falsch

Siehe auch ` equals()`.

bool QJSValue::toBool() const

Gibt den booleschen Wert dieses ` QJSValue` zurück, wobei die in ECMA-262, Abschnitt 9.2, „ToBoolean“ beschriebenen Konvertierungsregeln angewendet werden.

Beachten Sie, dass der Aufruf dieser Funktion Nebenwirkungen auf die Skript-Engine hat, wenn dieses ` QJSValue ` ein Objekt ist, da die Engine die Funktion `valueOf()` des Objekts (und möglicherweise ` toString()`) aufruft, um das Objekt in einen primitiven Wert zu konvertieren (was möglicherweise zu einer nicht abgefangenen Skript-Ausnahme führt).

Siehe auch ` isBool()`.

QDateTime QJSValue::toDateTime() const

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

Siehe auch isDate().

qint32 QJSValue::toInt() const

Gibt den vorzeichenbehafteten 32-Bit-Ganzzahlwert dieses ` QJSValue` unter Verwendung der in ECMA-262, Abschnitt 9.5, „ToInt32“ beschriebenen Konvertierungsregeln zurück.

Beachten Sie, dass der Aufruf dieser Funktion Nebenwirkungen auf die Skript-Engine hat, wenn dieses ` QJSValue ` ein Objekt ist, 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-Ausnahme führt).

Siehe auch ` toNumber()` und ` toUInt()`.

double QJSValue::toNumber() const

Gibt den Zahlenwert dieses ` QJSValue` zurück, wie in ECMA-262, Abschnitt 9.3, „ToNumber“, definiert.

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

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

QJSPrimitiveValue QJSValue::toPrimitive() const

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

Hinweis: Die Konvertierung eines verwalteten Werts in eine Zeichenkette kann eine Ausnahme auslösen. Insbesondere können Symbole nicht in Zeichenketten umgewandelt werden, oder eine benutzerdefinierte Methode „ toString()“ kann eine Ausnahme auslösen. In diesem Fall ist das Ergebnis der Wert „undefined“, und die Engine führt nach der Konvertierung einen Fehler aus.

const QMetaObject *QJSValue::toQMetaObject() const

* Wenn diese ` QJSValue ` ein ` QMetaObject` ist, gibt die Funktion den Zeiger ` QMetaObject ` zurück, * den die ` QJSValue ` repräsentiert; andernfalls gibt sie ` nullptr` zurück. * *

Siehe auch isQMetaObject().

QObject *QJSValue::toQObject() const

Wenn diese „ QJSValue “ ein „ QObject “ ist, gibt die Funktion den „ QObject “-Zeiger zurück, den die „ QJSValue “ repräsentiert; andernfalls gibt sie „ nullptr “ zurück.

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

Siehe auch isQObject().

QString QJSValue::toString() const

Gibt den Zeichenfolgenwert dieses ` QJSValue` zurück, wie in ECMA-262, Abschnitt 9.8, „ToString“, definiert.

Beachten Sie, dass der Aufruf dieser Funktion, falls dieses ` QJSValue ` ein Objekt ist, Nebenwirkungen auf die Skript-Engine hat, da die Engine die Funktion `toString()` (und möglicherweise `valueOf()`) des Objekts aufruft, um das Objekt in einen primitiven Wert zu konvertieren (was möglicherweise zu einer nicht abgefangenen Skript-Ausnahme führt).

Siehe auch ` isString()`.

quint32 QJSValue::toUInt() const

Gibt den vorzeichenlosen 32-Bit-Ganzzahlwert dieses ` QJSValue` zurück, wobei die in ECMA-262, Abschnitt 9.6, „ToUint32“ beschriebenen Konvertierungsregeln angewendet werden.

Beachten Sie, dass der Aufruf dieser Funktion Nebenwirkungen auf die Skript-Engine hat, wenn dieses ` QJSValue ` ein Objekt ist, da die Engine die Funktion `valueOf()` des Objekts (und möglicherweise ` toString()`) aufruft, um das Objekt in einen primitiven Wert zu konvertieren (was möglicherweise zu einer nicht abgefangenen Skript-Ausnahme führt).

Siehe auch ` toNumber()` und ` toInt()`.

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

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

EingabetypErgebnis
UndefiniertEin ungültiges ` QVariant`.
NullEin ` QVariant `, der einen Nullzeiger enthält (QMetaType::Nullptr).
Boolescher WertEin ` QVariant `, der den Wert des Booleschen Werts enthält.
ZahlEin „ QVariant “, der den Wert der Zahl enthält.
ZeichenketteEin „ QVariant “, der den Wert der Zeichenkette enthält.
QVariant ObjektDas Ergebnis ist der Wert des Objekts als „ QVariant “ (keine Konvertierung).
QVariantMap ObjektEin ` QVariant `, der die im Objekt gespeicherten ` QVariantMap ` enthält (keine Konvertierung).
QVariantHash ObjektEin ` QVariant `, der die im Objekt gespeicherten ` QVariantHash ` enthält (keine Konvertierung).
QObject ObjektEin ` QVariant `, der einen Zeiger auf den ` QObject` enthält.
DatumsobjektEin „ QVariant “, der den Datumswert enthält (toDateTime()).
RegularExpression ObjektEin ` QVariant `, der den Wert des regulären Ausdrucks enthält.

Für andere Typen ist der Parameter „ behavior “ relevant. Wenn „ ConvertJSObjects “ angegeben wird, wird eine bestmögliche, aber möglicherweise verlustbehaftete Konvertierung versucht. Generische JavaScript-Objekte werden in ` QVariantMap` konvertiert. JavaScript-Arrays werden in ` QVariantList` konvertiert. Jede Eigenschaft bzw. jedes Element wird rekursiv in ein ` QVariant` konvertiert; zyklische Referenzen werden nicht verfolgt. JavaScript-Funktionsobjekte werden verworfen. Wenn ` RetainJSObjects ` angegeben ist, wird das ` QJSValue ` über ` QVariant::fromValue()` in ein ` QVariant ` verpackt. Die resultierende Konvertierung ist verlustfrei, aber die interne Struktur der Objekte ist nicht unmittelbar zugänglich.

Siehe auch ` isVariant()`.

QVariant QJSValue::toVariant() const

Gibt `toVariant(ConvertJSObjects)` zurück.

Dies ist eine überladene Funktion.

Siehe auch ` isVariant()`.

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

Weist dem Objekt „ QJSValue “ das Objekt „ “ zu. zu diesem Objekt „ “ zu. zu diesem Objekt „ “ zu. zu diesem Objekt „ “ zu. other zu diesem Objekt „ “ zu. zu diesem Objekt „ “ zu. zu diesem Objekt „ “ zu. zu diesem Objekt „ “ zu. zu diesem Objekt „ “ zu

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

Weist diesem ` QJSValue` den Wert von ` other ` zu.

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

Verwandte Nicht-Mitglieder

QJSValueList

Dies ist eine Typdefinition für einen „ QList “ <QJSValue>.

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