QJSValue Class
La classe QJSValue sert de conteneur pour les types de données Qt/JavaScript. Plus d'informations...
| 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) |
Non-membres apparentés
Description détaillée
QJSValue prend en charge les types définis dans la norme ECMA-262: Les types primitifs, qui sont Undefined, Null, Boolean, Number et String ; et les types Object et Array. En outre, 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() dans QJSEngine (par exemple QJSEngine::newObject()) pour créer une QJSValue du type souhaité. Pour les types primitifs, utilisez l'une des surcharges du constructeur de 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()) peuvent être utilisées pour tester si une valeur est d'un certain type. Les méthodes nommées toT() (par exemple toBool(), toString()) peuvent être utilisées pour convertir une QJSValue en un autre type. Vous pouvez également utiliser la fonction générique qjsvalue_cast().
Les valeurs d'objets ont 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 de script, utilisez la classe QJSValueIterator.
Les valeurs des objets ont une propriété interne prototype, à laquelle on peut accéder avec prototype() et setPrototype().
Les objets fonction (objets pour lesquels isCallable()) renvoie vrai) peuvent être invoqués en appelant call(). Les fonctions de construction peuvent être utilisées pour construire de nouveaux objets en appelant callAsConstructor().
Utilisez equals() ou strictlyEquals() pour comparer une QJSValue à une autre.
Notez qu'une valeur QJSValue pour laquelle isObject() est vrai ne porte qu'une référence à un objet réel ; la copie de la valeur QJSValue ne copiera que la référence de 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 dans un autre objet), vous pouvez le faire à l'aide d'une instruction for-in dans le code script, ou QJSValueIterator en C++.
Travailler avec des tableaux
Pour créer un tableau à l'aide de QJSValue, utilisez 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 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 lit 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 une QJSValue en un type JSON. Par exemple, pour convertir un 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 liste pour les types d'objets Error spécifiques au langage JavaScript.
Ils peuvent être utiles lorsque l'émulation des caractéristiques du langage en C++ nécessite l'utilisation de types d'exception spécialisés. En outre, ils peuvent aider à communiquer plus clairement certaines conditions typiques, au lieu de lancer une exception JavaScript générique. Par exemple, le code qui traite des réseaux et des localisateurs de ressources peut trouver utile de propager les erreurs liées aux localisateurs malformés en utilisant le type URIError.
| Constante | Valeur | Description |
|---|---|---|
QJSValue::GenericError | 1 | Un objet Erreur générique, mais pas de sous-type spécifique. |
QJSValue::RangeError | 3 | Une valeur ne correspond pas à l'ensemble ou à l'intervalle attendu. |
QJSValue::ReferenceError | 4 | Une variable inexistante a été référencée. |
QJSValue::SyntaxError | 5 | Un élément ou une séquence d'éléments non valide, non conforme à la syntaxe du langage, a été rencontré. |
QJSValue::TypeError | 6 | Un opérande ou un argument est incompatible avec le type attendu. |
QJSValue::URIError | 7 | Une 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 est utilisée pour spécifier comment les objets et symboles JavaScript sans type Qt XML équivalent doivent être traités lors de la conversion vers QVariant.
| Constante | Valeur | Description |
|---|---|---|
QJSValue::ConvertJSObjects | 0 | Une conversion au mieux, éventuellement avec perte, est tentée. Les symboles sont convertis en QString. |
QJSValue::RetainJSObjects | 1 | La valeur est conservée sous la forme QJSValue enveloppée dans QVariant. |
enum QJSValue::SpecialValue
Cette énumération est utilisée pour spécifier un type à valeur unique.
| Constante | Valeur | Description de la valeur |
|---|---|---|
QJSValue::UndefinedValue | 1 | Une valeur indéfinie. |
QJSValue::NullValue | 0 | Une valeur nulle. |
Documentation des fonctions membres
QJSValue::QJSValue(QJSValue::SpecialValue value = UndefinedValue)
Construit une nouvelle QJSValue avec une value spéciale.
QJSValue::QJSValue(bool value)
Construit une nouvelle QJSValue avec un booléen value.
QJSValue::QJSValue(const QLatin1String &value)
Construit une nouvelle QJSValue avec une chaîne de caractères value.
QJSValue::QJSValue(const QString &value)
Construit une nouvelle QJSValue avec une chaîne de caractères value.
QJSValue::QJSValue(const char *value)
Construit une nouvelle QJSValue avec une chaîne de caractères value.
QJSValue::QJSValue(double value)
Construit une nouvelle QJSValue avec un nombre value.
QJSValue::QJSValue(int value)
Construit une nouvelle QJSValue avec un nombre value.
QJSValue::QJSValue(uint value)
Construit une nouvelle QJSValue avec un nombre value.
QJSValue::QJSValue(const QJSValue &other)
Construit une nouvelle QJSValue qui est une copie de other.
Notez que si other est un objet (c'est-à-dire que isObject() renverrait 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éplacement de other vers cet objet QJSValue.
[noexcept] QJSValue::~QJSValue()
Détruit cette QJSValue.
QJSValue QJSValue::call(const QJSValueList &args = QJSValueList()) const
Appelle cette QJSValue en tant que fonction, en passant args comme argument à la fonction et en utilisant l'objet global () comme objet "this". Renvoie la valeur renvoyée par la fonction.
Si cette QJSValue n'est pas appelable, call() ne fait rien et renvoie une QJSValue non définie.
L'appel de call() peut provoquer une exception dans le moteur de script ; dans ce cas, call() renvoie la valeur qui a été lancée (généralement un objet Error ). Vous pouvez appeler isError() sur la valeur de retour 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 nouveau Object et appelle ce QJSValue en tant que constructeur, en utilisant l'objet créé comme objet `this' et en passant args en tant qu'arguments. Si la valeur de retour de l'appel au constructeur est un objet, alors cet objet est renvoyé ; sinon, l'objet construit par défaut est renvoyé.
Si cette QJSValue n'est pas une fonction, callAsConstructor() ne fait rien et renvoie une QJSValue indéfinie.
L'appel à cette fonction peut provoquer une exception dans le moteur de script ; dans ce cas, la valeur lancée (généralement un objet Error ) est renvoyée. Vous pouvez appeler isError() sur la valeur de retour 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 ce QJSValue en tant que fonction, en utilisant instance comme objet `this' dans l'appel de fonction, et en passant 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 non définie QJSValue.
Notez que si instance n'est pas un objet, l'objet global (voir QJSEngine::globalObject()) sera utilisé comme objet `this'.
L'appel à call() peut provoquer une exception dans le moteur de script ; dans ce cas, call() renvoie la valeur qui a été lancée (généralement un objet Error ). Vous pouvez appeler isError() sur la valeur de retour 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 de l'adresse name. Retourne true si la propriété a été supprimée, sinon retourne false.
Le comportement de cette fonction est cohérent avec l'opérateur JavaScript delete. En particulier :
- Les propriétés non configurables ne peuvent pas être supprimées.
- Cette fonction renvoie un message vrai même si cet objet ne possède pas de propriété du type name (les propriétés inexistantes sont "trivialement supprimables").
- Si cet objet n'a pas de propriété propre de l'objet name donné, mais qu'un objet de la chaîne prototype() en a une, la propriété de l'objet prototype n'est pas supprimée et cette fonction renvoie vrai.
Voir aussi setProperty() et hasOwnProperty().
bool QJSValue::equals(const QJSValue &other) const
Renvoie un résultat vrai si QJSValue est égal à other, sinon il renvoie un résultat faux. La comparaison suit le comportement décrit dans la section 11.9.3 de l'ECMA-262, "The Abstract Equality Comparison Algorithm".
Cette fonction peut renvoyer un résultat positif même si le type de cette valeur QJSValue est différent de celui de la valeur other; autrement dit, la comparaison n'est pas stricte. Par exemple, la comparaison du nombre 9 à la chaîne de caractères "9" renvoie la valeur vraie ; la comparaison d'une valeur indéfinie à une valeur nulle renvoie la valeur vraie ; la comparaison d'un objet Number dont la valeur primitive est 6 à un objet String dont la valeur primitive est "6" renvoie la valeur vraie ; et la comparaison du nombre 1 à la valeur booléenne true renvoie la valeur vraie. Si vous souhaitez effectuer une comparaison sans conversion implicite de valeur, utilisez strictlyEquals().
Notez que si cette valeur QJSValue ou la valeur other sont des objets, l'appel à cette fonction a des effets secondaires sur le moteur de script, puisque le moteur 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 capturée).
Voir également strictlyEquals().
QJSValue::ErrorType QJSValue::errorType() const
Renvoie le type d'erreur que représente cette QJSValue s'il s'agit d'un objet Error. Sinon, renvoie NoError."
Voir également isError() et QJSEngine - Script Exceptions.
bool QJSValue::hasOwnProperty(const QString &name) const
Retourne vrai si cet objet possède une propriété propre (non héritée d'un prototype) de l'objet donné name, sinon retourne faux.
Voir aussi property() et hasProperty().
bool QJSValue::hasProperty(const QString &name) const
Retourne vrai si cet objet possède une propriété du type name, sinon retourne faux.
Voir aussi property() et hasOwnProperty().
bool QJSValue::isArray() const
Retourne true si ce QJSValue est un objet de la classe Array, sinon retourne false.
Remarque : cette méthode est l'équivalent de Array.isArray() en JavaScript. Vous pouvez l'utiliser pour identifier les tableaux JavaScript, mais elle renvoie false pour tous les objets de type tableau qui ne sont pas des tableaux JavaScript. Cela inclut les objets de liste QML pour les types de valeur ou d'objet, les tableaux typés JavaScript, les objets ArrayBuffer JavaScript et tous les objets personnalisés de type tableau que vous pouvez créer vous-même. Tous ces objets se comportent comme des tableaux JavaScript : Ils exposent généralement les mêmes méthodes et l'opérateur d'indice peut être utilisé sur eux. Il n'est donc pas conseillé 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
Retourne true si cette QJSValue est du type primitif Boolean ; sinon retourne false.
Voir également toBool().
bool QJSValue::isCallable() const
Retourne true si cette QJSValue est une fonction, sinon retourne false.
Voir aussi call().
bool QJSValue::isDate() const
Retourne true si cette QJSValue est un objet de la classe Date, sinon retourne false.
bool QJSValue::isError() const
Retourne vrai si ce QJSValue est un objet de la classe Error, sinon retourne faux.
Voir aussi errorType() et QJSEngine - Script Exceptions.
bool QJSValue::isNull() const
Retourne true si cette QJSValue est du type primitif Null ; sinon retourne false.
bool QJSValue::isNumber() const
Retourne true si cette QJSValue est du type primitif Number ; sinon retourne false.
Voir également toNumber().
bool QJSValue::isObject() const
Retourne true si cette QJSValue est de type Object ; sinon, retourne false.
Notez que les valeurs de fonction, les valeurs de variante et les valeurs QObject sont des objets, et cette fonction renvoie donc true pour ces valeurs.
Voir également QJSEngine::newObject().
bool QJSValue::isQMetaObject() const
Retourne vrai si ce QJSValue est un QMetaObject; sinon retourne faux.
Voir aussi toQMetaObject() et QJSEngine::newQMetaObject().
bool QJSValue::isQObject() const
Retourne vrai si ce QJSValue est un QObject; sinon retourne faux.
Remarque : cette fonction renvoie un message vrai même si le site QObject que ce site QJSValue recouvre a été supprimé.
Voir aussi toQObject() et QJSEngine::newQObject().
bool QJSValue::isRegExp() const
Retourne vrai si cette QJSValue est un objet de la classe RegExp, sinon retourne faux.
bool QJSValue::isString() const
Retourne true si cette QJSValue est du type primitif String ; sinon retourne false.
Voir également toString().
bool QJSValue::isUndefined() const
Retourne true si cette QJSValue est du type primitif Undefined ou si la valeur gérée a été effacée (en supprimant le moteur). Sinon, il renvoie false.
bool QJSValue::isUrl() const
Retourne true si ce QJSValue est un objet de la classe JavaScript URL, sinon retourne false.
Note : Pour un QJSValue qui contient un QUrl, cette fonction renvoie false. Cependant, toVariant().value<QUrl>() fonctionne dans les deux cas.
QJSValue QJSValue::property(const QString &name) const
Renvoie la valeur de la propriété de ce QJSValue avec le name donné. Si une telle propriété n'existe pas, une valeur non définie QJSValue est renvoyée.
Si la propriété est implémentée à l'aide d'une fonction getter (c'est-à-dire si le drapeau PropertyGetter est activé), l'appel à property() a des effets secondaires sur le moteur de script, puisque la fonction getter sera appelée (ce qui peut entraîner une exception de script non capturée). Si une exception s'est produite, property() renvoie la valeur qui a été lancé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 aussi setProperty(), hasProperty() et QJSValueIterator.
QJSValue QJSValue::property(quint32 arrayIndex) const
Renvoie la propriété à l'adresse arrayIndex.
Il est possible d'accéder aux éléments d'un tableau de deux manières. La première consiste à utiliser l'indice du tableau comme nom de la 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 aboutissent au même résultat, mais la seconde est plus facile à utiliser (elle peut utiliser un index) :
- est plus facile à utiliser (on peut utiliser un entier directement)
- est plus rapide (pas de conversion en entier)
Si QJSValue n'est pas un objet de type tableau, cette fonction se comporte comme si property() était 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 QJSValue est un objet, renvoie le prototype interne (propriété__proto__ ) de cet objet ; sinon, renvoie une valeur non définie QJSValue.
Voir aussi setPrototype() et isObject().
void QJSValue::setProperty(const QString &name, const QJSValue &value)
Fixe la valeur de la propriété de ce QJSValue avec le name donné à value.
Si QJSValue n'est pas un objet, cette fonction ne fait rien.
Si cette QJSValue n'a pas déjà une propriété avec le nom name, une nouvelle propriété est créée.
Pour modifier les éléments d'un tableau, utilisez plutôt la surcharge setProperty(quint32 arrayIndex, const QJSValue &value).
Voir aussi property() et deleteProperty().
void QJSValue::setProperty(quint32 arrayIndex, const QJSValue &value)
Définit la propriété à l'adresse arrayIndex donnée à l'adresse value donnée.
Il est possible de modifier les éléments d'un tableau de deux manières. La première consiste à utiliser l'index du tableau comme nom de la propriété :
jsValueArray.setProperty(QLatin1String("4"), value);
La seconde consiste à utiliser la surcharge qui prend un index :
jsValueArray.setProperty(4, value);
Ces deux approches aboutissent au même résultat, mais la seconde est plus facile à utiliser (elle peut utiliser un index) :
- est plus facile à utiliser (on peut utiliser un entier directement)
- est plus rapide (pas de conversion en entier)
Si QJSValue n'est pas un objet Array, cette fonction se comporte comme si setProperty() était 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 aussi property(quint32 arrayIndex) et Working With Arrays.
void QJSValue::setPrototype(const QJSValue &prototype)
Si ce QJSValue est un objet, il définit le prototype interne (propriété__proto__ ) de cet objet comme étant prototype; si le QJSValue est nul, il définit le prototype comme étant nul ; sinon, il ne fait rien.
Le prototype interne ne doit pas être confondu avec la propriété publique appelée "prototype" ; le prototype public n'est généralement défini que pour les fonctions qui agissent comme des constructeurs.
Voir également prototype() et isObject().
bool QJSValue::strictlyEquals(const QJSValue &other) const
Renvoie un message vrai si QJSValue est égal à other en utilisant une comparaison stricte (pas de conversion), sinon il renvoie un message faux. La comparaison suit le comportement décrit dans la section 11.9.6 de l'ECMA-262, "The Strict Equality Comparison Algorithm".
Si le type de cette valeur QJSValue est différent de celui de la valeur other, cette fonction renvoie un message faux. Si les types sont égaux, le résultat dépend du type, comme le montre le tableau suivant :
| Type | Résultat |
|---|---|
| Non défini | vrai |
| Nul | vrai |
| Booléen | vrai si les valeurs sont toutes deux vraies ou toutes deux fausses, faux sinon |
| Nombre | false si l'une des valeurs est NaN (Not-a-Number) ; true si les valeurs sont égales, false sinon |
| Chaîne de caractères | true si les deux valeurs sont exactement la même séquence de caractères, false sinon |
| Objet | true si les deux valeurs font référence au même objet, false sinon |
Voir aussi equals().
bool QJSValue::toBool() const
Renvoie la valeur booléenne de ce site QJSValue, en utilisant les règles de conversion décrites dans la section 9.2 de l'ECMA-262, "ToBoolean".
Notez que si ce QJSValue est un objet, l'appel à cette fonction a des effets secondaires sur le moteur de script, puisque le moteur 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 capturée).
Voir également isBool().
QDateTime QJSValue::toDateTime() const
Renvoie une représentation QDateTime de cette valeur, en heure locale. Si ce QJSValue n'est pas une date, ou si la valeur de la date est NaN (Not-a-Number), un QDateTime invalide est renvoyé.
Voir aussi isDate().
qint32 QJSValue::toInt() const
Renvoie la valeur de l'entier 32 bits signé de ce QJSValue, en utilisant les règles de conversion décrites dans la section 9.5 de l'ECMA-262, "ToInt32".
Notez que si ce QJSValue est un objet, l'appel à cette fonction a des effets secondaires sur le moteur de script, puisque le moteur 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 capturée).
Voir également toNumber() et toUInt().
double QJSValue::toNumber() const
Renvoie la valeur numérique de cette adresse QJSValue, comme défini dans la section 9.3 de l 'ECMA-262, "ToNumber".
Notez que si ce QJSValue est un objet, l'appel à cette fonction a des effets secondaires sur le moteur de script, puisque le moteur 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 capturée).
Voir aussi isNumber(), toInt() et toUInt().
QJSPrimitiveValue QJSValue::toPrimitive() const
Convertit la valeur en QJSPrimitiveValue. Si la valeur correspond à un type pris en charge par QJSPrimitiveValue, elle est copiée. Sinon, la valeur est convertie en chaîne de caractères et la chaîne est stockée dans QJSPrimitiveValue.
Remarque : la conversion d'une valeur gérée en chaîne de caractères peut entraîner une exception. En particulier, les symboles ne peuvent pas être convertis en chaînes de caractères, ou une méthode personnalisée toString() peut être déclenchée. Dans ce cas, le résultat est une valeur non définie et le moteur signale une erreur après la conversion.
const QMetaObject *QJSValue::toQMetaObject() const
* Si ce QJSValue est un QMetaObject, renvoie le pointeur QMetaObject * que le QJSValue représente ; sinon, renvoie nullptr. * *
Voir aussi isQMetaObject().
QObject *QJSValue::toQObject() const
Si ce QJSValue est un QObject, elle renvoie le pointeur QObject que le QJSValue représente ; sinon, elle renvoie nullptr.
Si le QObject que ce QJSValue contient a été supprimé, cette fonction renvoie nullptr (c'est-à-dire qu'il est possible que toQObject() renvoie nullptr même si isQObject() renvoie true).
Voir également isQObject().
QString QJSValue::toString() const
Renvoie la valeur de la chaîne de caractères de cette adresse QJSValue, comme défini dans la section 9.8 de l 'ECMA-262, "ToString".
Notez que si ce QJSValue est un objet, l'appel à cette fonction a des effets secondaires sur le moteur de script, puisque le moteur appellera la fonction toString() de l'objet (et éventuellement valueOf()) pour tenter de convertir l'objet en une valeur primitive (ce qui peut entraîner une exception de script non capturée).
Voir également isString().
quint32 QJSValue::toUInt() const
Renvoie la valeur entière 32 bits non signée de ce QJSValue, en utilisant les règles de conversion décrites dans la section 9.6 de l'ECMA-262, "ToUint32".
Notez que si ce QJSValue est un objet, l'appel à cette fonction a des effets secondaires sur le moteur de script, puisque le moteur 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 capturée).
Voir aussi toNumber() et toInt().
QVariant QJSValue::toVariant(QJSValue::ObjectConversionBehavior behavior) const
Renvoie la valeur QVariant de ce QJSValue, s'il peut être converti en QVariant; sinon renvoie un QVariant invalide. Certains types et objets JavaScript ont des expressions natives dans Qt. Ils sont convertis en expressions natives. Par exemple :
| Type d'entrée | Résultat |
|---|---|
| Non défini | Un QVariant invalide. |
| Nul | Un QVariant contenant un pointeur nul (QMetaType::Nullptr). |
| Booléen | Un QVariant contenant la valeur du booléen. |
| Nombre | Un QVariant contenant la valeur du nombre. |
| Chaîne | Un QVariant contenant la valeur de la chaîne de caractères. |
| QVariant Objet | Le résultat est la valeur QVariant de l'objet (pas de conversion). |
| QVariantMap Objet | Un QVariant contenant le QVariantMap stocké dans l'objet (pas de conversion). |
| QVariantHash Objet | Un QVariant contenant le QVariantHash stocké dans l'objet (pas de conversion). |
| QObject Objet | Un QVariant contenant un pointeur sur le QObject. |
| Objet Date | Un QVariant contenant la valeur de la date (toDateTime()). |
| RegularExpression Objet | Un 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 avec des pertes éventuelles. 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 fonctionnels JavaScript sont abandonnés. Si RetainJSObjects est donné, le QJSValue est enveloppé dans un QVariant via QVariant::fromValue(). La conversion qui en résulte est sans perte, mais la structure interne des objets n'est pas immédiatement accessible.
Voir aussi isVariant().
QVariant QJSValue::toVariant() const
Retourne toVariant(ConvertJSObjects).
Il s'agit d'une fonction surchargée.
Voir aussi isVariant().
QJSValue &QJSValue::operator=(QJSValue &&other)
Déplacer - assigne other à cet objet QJSValue.
QJSValue &QJSValue::operator=(const QJSValue &other)
Affecte la valeur other à cette 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é.
© 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.