Sur cette page

QJSValue Class

La classe QJSValue sert de conteneur pour les types de données Qt/JavaScript. En savoir plus...

En-tête : #include <QJSValue>
CMake : find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake : QT += qml

Types publics

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

Fonctions publiques

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)

Description détaillée

QJSValue prend en charge les types définis dans la norme ECMA-262: les types primitifs, à savoir Undefined, Null, Boolean, Number et String ; ainsi que les types Object et Array. De plus, une prise en charge intégrée est fournie pour les types Qt/C++ tels que QVariant et QObject.

Pour les types basés sur des objets (y compris Date et RegExp), utilisez les fonctions newT() de QJSEngine (par exemple QJSEngine::newObject()) pour créer un QJSValue du type souhaité. Pour les types primitifs, utilisez l’une des surcharges du constructeur QJSValue. Pour les autres types, par exemple les types de gadgets enregistrés tels que QPoint, vous pouvez utiliser QJSEngine::toScriptValue.

Les méthodes nommées isT() (par exemple isBool(), isUndefined()) permettent de vérifier si une valeur est d’un certain type. Les méthodes nommées toT() (par exemple toBool(), toString()) permettent de convertir un QJSValue en un autre type. Vous pouvez également utiliser la fonction générique `qjsvalue_cast()`.

Les valeurs d’objet possèdent zéro ou plusieurs propriétés qui sont elles-mêmes des QJSValues. Utilisez setProperty() pour définir une propriété d’un objet, et appelez property() pour récupérer la valeur d’une propriété.

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

Si vous souhaitez parcourir les propriétés d’un objet script, utilisez la classe QJSValueIterator.

Les valeurs d’objet possèdent une propriété interne prototype, accessible via prototype() et setPrototype().

Les objets fonction (objets pour lesquels isCallable()) renvoie true) peuvent être invoqués en appelant call(). Les fonctions constructrices peuvent être utilisées pour créer de nouveaux objets en appelant callAsConstructor().

Utilisez ` equals()` ou ` strictlyEquals()` pour comparer une valeur `QJSValue` à une autre.

Notez qu’un QJSValue pour lequel isObject() renvoie vrai ne contient qu’une référence à un objet réel ; la copie du QJSValue ne copiera que la référence à l’objet, et non l’objet lui-même. Si vous souhaitez cloner un objet (c'est-à-dire copier les propriétés d'un objet vers un autre objet), vous pouvez le faire à l'aide d'une instruction for-in dans le code de script, ou d'une instruction QJSValueIterator en C++.

Utilisation des tableaux

Pour créer un tableau à l’aide de QJSValue, utilisez la fonction QJSEngine::newArray() :

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

Pour définir des éléments individuels dans le tableau, utilisez la surcharge de la fonction setProperty(quint32 arrayIndex, const QJSValue &value). Par exemple, pour remplir le tableau ci-dessus avec des entiers :

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

Pour déterminer la longueur du tableau, accédez à la propriété ` "length" `. Pour accéder aux éléments du tableau, utilisez la surcharge ` property(quint32 arrayIndex)`. Le code suivant relit le tableau que nous avons créé ci-dessus dans une liste :

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

Conversion en JSON

Il est possible de convertir un QJSValue en un type JSON. Par exemple, pour le convertir en tableau, utilisez ` QJSEngine::fromScriptValue()` :

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

Voir également QJSEngine et QJSValueIterator.

Documentation sur les types de membres

enum QJSValue::ErrorType

Utilisez cette énumération pour les types d'objets `Error` spécifiques au langage JavaScript.

Ils peuvent s’avérer utiles lorsque l’émulation de fonctionnalités du langage en C++ nécessite l’utilisation de types d’exceptions spécialisés. De plus, ils peuvent aider à communiquer plus clairement certaines conditions typiques, plutôt que de lever une exception JavaScript générique. Par exemple, un code traitant des réseaux et des localisateurs de ressources peut trouver utile de propager les erreurs liées à des localisateurs mal formés à l’aide du type URIError.

ConstanteValeurDescription
QJSValue::GenericError1Un objet Error générique, mais n'appartenant à aucun sous-type spécifique.
QJSValue::RangeError3Une valeur ne correspondait pas à l’ensemble ou à la plage attendue.
QJSValue::ReferenceError4Référence à une variable inexistante.
QJSValue::SyntaxError5Un token ou une séquence de tokens invalide a été détecté(e), non conforme à la syntaxe du langage.
QJSValue::TypeError6Un opérande ou un argument est incompatible avec le type attendu.
QJSValue::URIError7Une fonction de gestion d'URI a été utilisée de manière incorrecte ou l'URI fourni est mal formé.

enum QJSValue::ObjectConversionBehavior

Cette énumération sert à spécifier comment les objets et symboles JavaScript ne disposant pas d'un type Qt natif équivalent doivent être traités lors de la conversion vers QVariant.

ConstanteValeurDescription
QJSValue::ConvertJSObjects0Une conversion est tentée au mieux, pouvant entraîner des pertes. Les symboles sont convertis en QString.
QJSValue::RetainJSObjects1La valeur est conservée sous la forme d’un objet ` QJSValue ` encapsulé dans un objet ` QVariant`.

enum QJSValue::SpecialValue

Cette énumération sert à définir un type à valeur unique.

ConstanteValeurDescription
QJSValue::UndefinedValue1Une valeur non définie.
QJSValue::NullValue0Une valeur nulle.

Documentation des fonctions membres

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

Crée un nouvel objet `QJSValue` avec une ` value` spécifique.

QJSValue::QJSValue(bool value)

Crée un nouvel objet QJSValue avec une valeur booléenne value.

QJSValue::QJSValue(const QLatin1String &value)

Crée un nouvel objet QJSValue avec une chaîne de caractères value.

QJSValue::QJSValue(const QString &value)

Crée un nouvel objet `QJSValue` avec une chaîne de caractères value.

QJSValue::QJSValue(const char *value)

Crée un nouvel objet QJSValue avec une chaîne de caractères value.

QJSValue::QJSValue(double value)

Crée un nouvel objet QJSValue contenant un nombre value.

QJSValue::QJSValue(int value)

Crée un nouvel objet QJSValue contenant un nombre value.

QJSValue::QJSValue(uint value)

Crée un nouvel objet QJSValue contenant un nombre value.

QJSValue::QJSValue(const QJSValue &other)

Crée un nouvel objet `QJSValue` qui est une copie de ` other`.

Notez que si other est un objet (c'est-à-dire si isObject() renvoie true), seule une référence à l'objet sous-jacent est copiée dans la nouvelle valeur de script (c'est-à-dire que l'objet lui-même n'est pas copié).

QJSValue::QJSValue(QJSValue &&other)

Constructeur de déplacement. Déplace les données de other vers cet objet QJSValue.

[noexcept] QJSValue::~QJSValue()

Supprime cette page : QJSValue.

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

Appelle cette QJSValue en tant que fonction, en lui transmettant args comme arguments et en utilisant globalObject() comme objet « this ». Renvoie la valeur renvoyée par la fonction.

Si cette QJSValue n'est pas appelable, la fonction call() ne fait rien et renvoie une QJSValue indéfinie.

L'appel de call() peut provoquer une exception dans le moteur de script ; dans ce cas, call() renvoie la valeur qui a été levée (généralement un objet Error ). Vous pouvez appeler isError() sur la valeur renvoyée pour déterminer si une exception s’est produite.

Voir également isCallable(), callWithInstance() et callAsConstructor().

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

Crée un nouvel objet ` Object ` et appelle cette méthode ` QJSValue ` en tant que constructeur, en utilisant l'objet créé comme objet `this` et en passant ` args ` comme arguments. Si la valeur renvoyée par l'appel au constructeur est un objet, c'est cet objet qui est renvoyé ; sinon, c'est l'objet construit par défaut qui est renvoyé.

Si cette QJSValue n'est pas une fonction, callAsConstructor() ne fait rien et renvoie une QJSValue indéfinie.

L’appel de cette fonction peut provoquer une exception dans le moteur de script ; dans ce cas, la valeur qui a été levée (généralement un objet ` Error `) est renvoyée. Vous pouvez appeler ` isError()` sur la valeur renvoyée pour déterminer si une exception s’est produite.

Voir également call() et QJSEngine::newObject().

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

Appelle cette QJSValue en tant que fonction, en utilisant instance comme objet « this » dans l’appel de fonction, et en transmettant args comme arguments à la fonction. Renvoie la valeur renvoyée par la fonction.

Si ` QJSValue ` n'est pas une fonction, ` call()` ne fait rien et renvoie une valeur indéfinie ` QJSValue`.

Notez que si ` instance ` n’est pas un objet, l’objet global (voir ` QJSEngine::globalObject()`) sera utilisé comme objet `this`.

L'appel de ` call()` peut provoquer une exception dans le moteur de script ; dans ce cas, ` call()` renvoie la valeur qui a été levée (généralement un objet ` Error `). Vous pouvez appeler ` isError()` sur la valeur renvoyée pour déterminer si une exception s’est produite.

Voir également call().

bool QJSValue::deleteProperty(const QString &name)

Tente de supprimer la propriété de cet objet correspondant à l'name on fournie. Renvoie « true » si la propriété a été supprimée, sinon renvoie « false ».

Le comportement de cette fonction est conforme à celui de l’opérateur `delete` de JavaScript. En particulier :

  • Les propriétés non configurables ne peuvent pas être supprimées.
  • Cette fonction renvoie « true » même si cet objet ne possède pas de propriété de l'name donnée (c'est-à-dire que les propriétés inexistantes sont « facilement supprimables »).
  • Si cet objet ne possède pas de propriété propre portant l’ name donnée, mais qu’un objet de la chaîne prototype() en possède une, la propriété de l’objet prototype n’est pas supprimée et cette fonction renvoie true.

Voir également setProperty() et hasOwnProperty().

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

Renvoie « true » si cette QJSValue est égale à other, sinon renvoie « false ». La comparaison suit le comportement décrit dans la section 11.9.3 de la norme ECMA-262, « L'algorithme abstrait de comparaison d'égalité ».

Cette fonction peut renvoyer « true » même si le type de cette QJSValue est différent de celui de la valeur other; c’est-à-dire que la comparaison n’est pas stricte. Par exemple, la comparaison du nombre 9 avec la chaîne « 9 » renvoie « true » ; la comparaison d’une valeur indéfinie avec une valeur nulle renvoie « true » ; la comparaison d’un objet ` Number ` dont la valeur primitive est 6 avec un objet ` String ` dont la valeur primitive est « 6 » renvoie « true » ; et la comparaison du nombre 1 avec la valeur booléenne ` true ` renvoie « true ». Si vous souhaitez effectuer une comparaison sans une telle conversion implicite de valeur, utilisez la fonction ` strictlyEquals()`.

Notez que si cette QJSValue ou la valeur other sont des objets, l’appel de cette fonction a des effets secondaires sur le moteur de script, car celui-ci appellera la fonction valueOf() de l’objet (et éventuellement toString()) pour tenter de convertir l’objet en une valeur primitive (ce qui peut entraîner une exception de script non interceptée).

Voir également strictlyEquals().

QJSValue::ErrorType QJSValue::errorType() const

Renvoie le type d'erreur représenté par cette QJSValue si celle-ci est un objet Error. Sinon, renvoie NoError."

Voir également isError() et QJSEngine - Script Exceptions.

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

Renvoie « true » si cet objet possède une propriété propre (et non héritée du prototype) de l'name donné ; sinon, renvoie « false ».

Voir également ` property()` et ` hasProperty()`.

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

Renvoie « true » si cet objet possède une propriété correspondant à l'name indiquée, sinon renvoie « false ».

Voir également ` property()` et ` hasOwnProperty()`.

bool QJSValue::isArray() const

Renvoie « true » si cet QJSValue est un objet de la classe Array ; sinon, renvoie « false ».

Remarque : cette méthode est l’équivalent de Array.isArray() en JavaScript. Vous pouvez l'utiliser pour identifier les tableaux JavaScript, mais elle renverra la valeur « false » pour tout objet de type tableau qui n'est pas un tableau JavaScript. Cela inclut les objets de liste QML, qu'ils soient de type valeur ou de type objet, les tableaux typés JavaScript, les objets ArrayBuffer JavaScript, ainsi que tout objet de type tableau personnalisé que vous pourriez créer vous-même. Tous ces objets se comportent toutefois comme des tableaux JavaScript : ils exposent généralement les mêmes méthodes et l’opérateur d’indexation peut être utilisé sur eux. Par conséquent, il n’est pas recommandé d’utiliser cette méthode pour déterminer si un objet peut être utilisé comme un tableau.

Voir également ` QJSEngine::newArray()`.

bool QJSValue::isBool() const

Renvoie « true » si cette variable « QJSValue » est de type primitif « booléen » ; sinon, renvoie « false ».

Voir aussi toBool().

bool QJSValue::isCallable() const

Renvoie « true » si cet QJSValue est une fonction, sinon renvoie « false ».

Voir aussi call().

bool QJSValue::isDate() const

Renvoie « true » si cette valeur « QJSValue » est un objet de la classe Date ; sinon, renvoie « false ».

bool QJSValue::isError() const

Renvoie « true » si cet QJSValue est un objet de la classe Error ; sinon, renvoie « false ».

Voir également ` errorType()` et ` QJSEngine - Script Exceptions`.

bool QJSValue::isNull() const

Renvoie « true » si cet objet « QJSValue » est de type primitif « Null » ; sinon, renvoie « false ».

bool QJSValue::isNumber() const

Renvoie « true » si cette QJSValue est de type primitif « Number » ; sinon, renvoie « false ».

Voir aussi toNumber().

bool QJSValue::isObject() const

Renvoie « true » si cette « QJSValue » est de type « Object » ; sinon, renvoie « false ».

Notez que les valeurs de fonction, les valeurs de variant et les valeurs d’ QObject sont des objets ; cette fonction renvoie donc vrai pour ces valeurs.

Voir également QJSEngine::newObject().

bool QJSValue::isQMetaObject() const

Renvoie « true » si cette QJSValue est une QMetaObject; sinon, renvoie « false ».

Voir également toQMetaObject() et QJSEngine::newQMetaObject().

bool QJSValue::isQObject() const

Renvoie « true » si cette QJSValue est une QObject; sinon, renvoie « false ».

Remarque : cette fonction renvoie « true » même si l'QObject que cet QJSValue encapsule a été supprimé.

Voir également ` toQObject()` et ` QJSEngine::newQObject()`.

bool QJSValue::isRegExp() const

Renvoie « true » si cette expression « QJSValue » est un objet de la classe RegExp ; sinon, renvoie « false ».

bool QJSValue::isString() const

Renvoie « true » si cet objet ` QJSValue ` est de type primitif `String` ; sinon, renvoie « false ».

Voir aussi toString().

bool QJSValue::isUndefined() const

Renvoie « true » si cette QJSValue est de type primitif « Undefined » ou si la valeur gérée a été effacée (en supprimant le moteur). Sinon, renvoie « false ».

bool QJSValue::isUrl() const

Renvoie « true » si cette chaîne « QJSValue » est un objet de la classe JavaScript « URL » ; sinon, renvoie « false ».

Remarque : pour une QJSValue contenant un QUrl, cette fonction renvoie « false ». Cependant, la méthode toVariant().value<QUrl>() fonctionne dans les deux cas.

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

Renvoie la valeur de la propriété de cet « QJSValue » correspondant à l’ name. Si aucune propriété de ce type n’existe, une valeur indéfinie « QJSValue » est renvoyée.

Si la propriété est implémentée à l’aide d’une fonction getter (c’est-à-dire si l’indicateur PropertyGetter est activé), l’appel à property() a des effets secondaires sur le moteur de script, car la fonction getter sera appelée (ce qui peut entraîner une exception de script non interceptée). Si une exception s’est produite, la méthode `property()` renvoie la valeur qui a été levée (généralement un objet ` Error `).

Pour accéder aux éléments d’un tableau, utilisez plutôt la surcharge setProperty(quint32 arrayIndex, const QJSValue &value).

Voir également setProperty(), hasProperty() et QJSValueIterator.

QJSValue QJSValue::property(quint32 arrayIndex) const

Renvoie la propriété située à l'arrayIndex e indiquée.

Il est possible d'accéder aux éléments d'un tableau de deux manières. La première consiste à utiliser l'index du tableau comme nom de propriété :

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

La seconde consiste à utiliser la surcharge qui prend un index :

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

Ces deux approches donnent le même résultat, à ceci près que la seconde :

  • est plus simple à utiliser (permet d'utiliser directement un entier)
  • est plus rapide (pas de conversion en entier)

Si l'QJSValue e n'est pas un objet Array, cette fonction se comporte comme si la méthode property() avait été appelée avec la représentation sous forme de chaîne de caractères de arrayIndex.

Il s’agit d’une fonction surchargée.

QJSValue QJSValue::prototype() const

Si cet QJSValue est un objet, renvoie le prototype interne (propriété__proto__ ) de cet objet ; sinon, renvoie une valeur indéfinie QJSValue.

Voir également ` setPrototype()` et ` isObject()`.

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

Définit la valeur de la propriété de cet QJSValue, dont l'name est spécifiée, sur la value indiquée.

Si cet QJSValue n'est pas un objet, cette fonction ne fait rien.

Si cet QJSValue ne possède pas encore de propriété nommée name, une nouvelle propriété est créée.

Pour modifier les éléments d’un tableau, utilisez plutôt la surcharge de la fonction setProperty(quint32 arrayIndex, const QJSValue &value).

Voir également property() et deleteProperty().

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

Définit la propriété de l'arrayIndex e indiquée sur la valeur value.

Il est possible de modifier les éléments d'un tableau de deux façons. La première consiste à utiliser l'index du tableau comme nom de propriété :

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

La seconde consiste à utiliser la surcharge qui prend un index :

jsValueArray.setProperty(4, value);

Ces deux approches donnent le même résultat, à ceci près que la seconde :

  • est plus simple à utiliser (permet d'utiliser directement un entier)
  • est plus rapide (pas de conversion en entier)

Si l'QJSValue e n'est pas un objet Array, cette fonction se comporte comme si la méthode setProperty() avait été appelée avec la représentation sous forme de chaîne de caractères de arrayIndex.

Il s’agit d’une fonction surchargée.

Voir également property(quint32 arrayIndex) et Working With Arrays.

void QJSValue::setPrototype(const QJSValue &prototype)

Si cet QJSValue est un objet, cette méthode définit le prototype interne (propriété__proto__ ) de cet objet sur prototype; si l'QJSValue est null, elle définit le prototype sur null ; sinon, elle ne fait rien.

Il ne faut pas confondre le prototype interne avec la propriété publique nommée « prototype » ; le prototype public n’est généralement défini que pour les fonctions qui agissent en tant que constructeurs.

Voir également prototype() et isObject().

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

Renvoie « true » si cette valeur « QJSValue » est égale à « other » selon une comparaison stricte (sans conversion) ; sinon, renvoie « false ». La comparaison suit le comportement décrit dans la section 11.9.6 de la norme ECMA-262, intitulée « The Strict Equality Comparison Algorithm » (Algorithme de comparaison d'égalité stricte).

Si le type de cet QJSValue est différent du type de la valeur other, cette fonction renvoie « false ». Si les types sont identiques, le résultat dépend du type, comme indiqué dans le tableau suivant :

TypeRésultat
Non définivrai
Nullvrai
Booléenvrai si les deux valeurs sont vraies ou fausses, faux dans le cas contraire
Nombrefaux si l'une des valeurs est NaN (Not-a-Number) ; vrai si les valeurs sont égales, faux dans le cas contraire
Chaînevrai si les deux valeurs sont exactement la même séquence de caractères, faux dans le cas contraire
Objetvrai si les deux valeurs font référence au même objet, faux dans le cas contraire

Voir aussi equals().

bool QJSValue::toBool() const

Renvoie la valeur booléenne de cet ` QJSValue`, en utilisant les règles de conversion décrites dans la section 9.2 de la norme ECMA-262, « ToBoolean ».

Notez que si cet ` QJSValue ` est un objet, l'appel de cette fonction a des effets secondaires sur le moteur de script, car celui-ci appellera la fonction `valueOf()` de l'objet (et éventuellement ` toString()`) pour tenter de convertir l'objet en une valeur primitive (ce qui peut entraîner une exception de script non interceptée).

Voir également ` isBool()`.

QDateTime QJSValue::toDateTime() const

Renvoie une représentation de type « QDateTime » de cette valeur, en heure locale. Si cette valeur « QJSValue » n'est pas une date, ou si la valeur de la date est NaN (Not-a-Number), une erreur « QDateTime » est renvoyée.

Voir également isDate().

qint32 QJSValue::toInt() const

Renvoie la valeur entière signée sur 32 bits de cet ` QJSValue`, en utilisant les règles de conversion décrites dans la section 9.5 de la norme ECMA-262, « ToInt32 ».

Notez que si cet QJSValue est un objet, l'appel de cette fonction a des effets secondaires sur le moteur de script, car celui-ci appellera la fonction valueOf() de l'objet (et éventuellement toString()) afin de tenter de convertir l'objet en une valeur primitive (ce qui peut entraîner une exception de script non interceptée).

Voir également ` toNumber()` et ` toUInt()`.

double QJSValue::toNumber() const

Renvoie la valeur numérique de cet ` QJSValue`, telle que définie dans la section 9.3 de la norme ECMA-262, « ToNumber ».

Notez que si cet QJSValue est un objet, l'appel de cette fonction a des effets secondaires sur le moteur de script, car celui-ci appellera la fonction valueOf() de l'objet (et éventuellement toString()) pour tenter de convertir l'objet en une valeur primitive (ce qui peut entraîner une exception de script non interceptée).

Voir également isNumber(), toInt() et toUInt().

QJSPrimitiveValue QJSValue::toPrimitive() const

Convertit la valeur en un objet ` QJSPrimitiveValue`. Si la valeur est d'un type pris en charge par ` QJSPrimitiveValue`, elle est copiée. Sinon, la valeur est convertie en chaîne de caractères, et cette chaîne est stockée dans ` QJSPrimitiveValue`.

Remarque : la conversion d'une valeur gérée en chaîne de caractères peut provoquer une exception. En particulier, les symboles ne peuvent pas être convertis de force en chaînes de caractères, ou une méthode personnalisée ` toString()` peut provoquer une exception. Dans ce cas, le résultat est la valeur indéfinie et le moteur génère une erreur après la conversion.

const QMetaObject *QJSValue::toQMetaObject() const

* Si cette adresse QJSValue est un QMetaObject, renvoie le pointeur QMetaObject * que représente l'QJSValue; sinon, renvoie nullptr. * *

Voir aussi isQMetaObject().

QObject *QJSValue::toQObject() const

Si cette QJSValue est un QObject, renvoie le pointeur QObject que représente le QJSValue; sinon, renvoie nullptr.

Si l'QObject que cet QJSValue encapsule a été supprimé, cette fonction renvoie nullptr (c'est-à-dire qu'il est possible que toQObject() renvoie nullptr même lorsque isQObject() renvoie true).

Voir également isQObject().

QString QJSValue::toString() const

Renvoie la valeur sous forme de chaîne de caractères de cet ` QJSValue`, conformément à la définition de la section 9.8 « ToString » de la norme ECMA-262.

Notez que si cette valeur ( QJSValue ) est un objet, l'appel de cette fonction a des effets secondaires sur le moteur de script, car celui-ci appellera la fonction toString() de l'objet (et éventuellement valueOf()) afin de tenter de convertir l'objet en une valeur primitive (ce qui peut entraîner une exception de script non interceptée).

Voir également ` isString()`.

quint32 QJSValue::toUInt() const

Renvoie la valeur entière 32 bits sans signe de cet ` QJSValue`, en utilisant les règles de conversion décrites dans la section 9.6 de la norme ECMA-262, « ToUint32 ».

Notez que si cet QJSValue est un objet, l'appel de cette fonction a des effets secondaires sur le moteur de script, car celui-ci appellera la fonction valueOf() de l'objet (et éventuellement toString()) pour tenter de convertir l'objet en une valeur primitive (ce qui peut entraîner une exception de script non interceptée).

Voir également ` toNumber()` et ` toInt()`.

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

Renvoie la valeur « QVariant » de cet objet « QJSValue », s’il peut être converti en « QVariant » ; sinon, renvoie un « QVariant » non valide. Certains types et objets JavaScript disposent d’expressions natives dans Qt. Ceux-ci sont convertis en leurs expressions natives. Par exemple :

Type d'entréeRésultat
Non définiUn « QVariant » non valide.
NullUne QVariant contenant un pointeur nul (QMetaType::Nullptr).
BooléenUne QVariant contenant la valeur du booléen.
NombreUne QVariant contenant la valeur d'un nombre.
ChaîneQVariant contenant la valeur de la chaîne de caractères.
QVariant ObjetLe résultat correspond à la valeur de l'QVariant de l'objet (sans conversion).
QVariantMap ObjetUn QVariant contenant l’ QVariantMap s stockées dans l’objet (sans conversion).
QVariantHash ObjetUne QVariant contenant l’ QVariantHash s stockées dans l’objet (sans conversion).
QObject ObjetQVariant contenant un pointeur vers l’ QObject.
Objet DateQVariant contenant la valeur de date (toDateTime()).
RegularExpression ObjetUn objet ` QVariant ` contenant la valeur de l’expression régulière.

Pour les autres types, le paramètre behavior est pertinent. Si ConvertJSObjects est fourni, une conversion est tentée dans la mesure du possible, mais elle peut entraîner des pertes de données. Les objets JavaScript génériques sont convertis en QVariantMap. Les tableaux JavaScript sont convertis en QVariantList. Chaque propriété ou élément est converti en QVariant, de manière récursive ; les références cycliques ne sont pas suivies. Les objets de fonction JavaScript sont ignorés. Si RetainJSObjects est fourni, l’ QJSValue est encapsulé dans un QVariant via QVariant::fromValue(). La conversion obtenue est sans perte, mais la structure interne des objets n’est pas immédiatement accessible.

Voir également ` isVariant()`.

QVariant QJSValue::toVariant() const

Renvoie toVariant(ConvertJSObjects).

Il s'agit d'une fonction surchargée.

Voir également isVariant().

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

Cette instruction attribue l'other à cet objet QJSValue.

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

Attribue la valeur de ` other ` à cet ` QJSValue`.

Notez que si other est un objet (isObject() renvoie true), seule une référence à l’objet sous-jacent sera attribuée ; l’objet lui-même ne sera pas copié.

Éléments non membres associés

QJSValueList

Il s'agit d'un typedef pour une interface 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.