QJSValue Class
La clase QJSValue actúa como contenedor de tipos de datos Qt/JavaScript. Más...
| Cabecera: | #include <QJSValue> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml)target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
Tipos públicos
| enum | ErrorType { GenericError, RangeError, ReferenceError, SyntaxError, TypeError, URIError } |
| enum | ObjectConversionBehavior { ConvertJSObjects, RetainJSObjects } |
| enum | SpecialValue { UndefinedValue, NullValue } |
Funciones públicas
| 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) |
No miembros relacionados
Descripción detallada
QJSValue soporta los tipos definidos en el estándar ECMA-262: Los tipos primitivos, que son Undefined, Null, Boolean, Number y String; y los tipos Object y Array. Además, se proporciona soporte integrado para tipos Qt/C++ como QVariant y QObject.
Para los tipos basados en objetos (incluyendo Date y RegExp), utilice las funciones newT() en QJSEngine (por ejemplo QJSEngine::newObject()) para crear un QJSValue del tipo deseado. Para los tipos primitivos, utilice una de las sobrecargas del constructor QJSValue. Para otros tipos, por ejemplo, tipos de gadget registrados como QPoint, puede utilizar QJSEngine::toScriptValue.
Los métodos llamados isT() (por ejemplo, isBool(), isUndefined()) pueden utilizarse para comprobar si un valor es de un tipo determinado. Los métodos llamados toT() (por ejemplo, toBool(), toString()) pueden utilizarse para convertir un QJSValue a otro tipo. También se puede utilizar la función genérica qjsvalue_cast().
Los valores objeto tienen cero o más propiedades que son a su vez QJSValues. Utilice setProperty() para establecer una propiedad de un objeto, y llame a property() para recuperar el valor de una propiedad.
QJSEngine myEngine; QJSValue myObject = myEngine.newObject(); QJSValue myOtherObject = myEngine.newObject(); myObject.setProperty("myChild", myOtherObject); myObject.setProperty("name", "John Doe");
Si quieres iterar sobre las propiedades de un objeto script, utiliza la clase QJSValueIterator.
Los valores de los objetos tienen una propiedad interna prototype, a la que se puede acceder con prototype() y setPrototype().
Los objetos de función (objetos para los que isCallable()) devuelve true) pueden invocarse llamando a call(). Las funciones constructoras pueden utilizarse para construir nuevos objetos llamando a callAsConstructor().
Utilice equals() o strictlyEquals() para comparar un QJSValue con otro.
Tenga en cuenta que un QJSValue para el que isObject() es verdadero sólo lleva una referencia a un objeto real; copiar el QJSValue sólo copiará la referencia al objeto, no el objeto en sí. Si desea clonar un objeto (es decir, copiar las propiedades de un objeto a otro objeto), puede hacerlo con la ayuda de una sentencia for-in en código script, o QJSValueIterator en C++.
Trabajar con arrays
Para crear una matriz con QJSValue, utilice QJSEngine::newArray():
// Assumes that this class was declared in QML. QJSValue jsArray = engine->newArray(3);
Para establecer elementos individuales en la matriz, utilice la sobrecarga setProperty(quint32 arrayIndex, const QJSValue &value). Por ejemplo, para llenar la matriz anterior con números enteros:
for (int i = 0; i < 3; ++i) { jsArray.setProperty(i, QRandomGenerator::global().generate()); }
Para determinar la longitud del array, accede a la propiedad "length". Para acceder a los elementos del array, utiliza la sobrecarga property(quint32 arrayIndex). El siguiente código lee el array que hemos creado anteriormente y lo convierte en una lista:
QList<int> integers; const int length = jsArray.property("length").toInt(); for (int i = 0; i < length; ++i) { integers.append(jsArray.property(i).toInt()); }
Conversión a JSON
Es posible convertir un QJSValue a un tipo JSON. Por ejemplo, para convertirlo en un array, utiliza QJSEngine::fromScriptValue():
const QJsonValue jsonValue = engine.fromScriptValue<QJsonValue>(jsValue); const QJsonArray jsonArray = jsonValue.toArray();
Ver también QJSEngine y QJSValueIterator.
Documentación de tipos de miembros
enum QJSValue::ErrorType
Utilice este enum para los tipos de objetos Error específicos del lenguaje JavaScript.
Pueden ser útiles cuando la emulación de características del lenguaje en C++ requiere el uso de tipos de excepción especializados. Además, pueden ayudar a comunicar más claramente ciertas condiciones típicas, en lugar de lanzar una excepción JavaScript genérica. Por ejemplo, el código que trata con redes y localizadores de recursos puede encontrar útil propagar errores relacionados con localizadores malformados utilizando el tipo URIError.
| Constante | Valor | Descripción |
|---|---|---|
QJSValue::GenericError | 1 | Un objeto Error genérico, pero no de un subtipo específico. |
QJSValue::RangeError | 3 | Un valor no coincide con el conjunto o rango esperado. |
QJSValue::ReferenceError | 4 | Se ha referenciado una variable inexistente. |
QJSValue::SyntaxError | 5 | Se ha encontrado un token o secuencia de tokens no válida que no se ajusta a la sintaxis del lenguaje. |
QJSValue::TypeError | 6 | Un operando o argumento es incompatible con el tipo esperado. |
QJSValue::URIError | 7 | Se ha utilizado incorrectamente una función de gestión de URI o la URI proporcionada está malformada. |
enum QJSValue::ObjectConversionBehavior
Este enum se utiliza para especificar cómo deben tratarse los objetos y símbolos JavaScript sin un tipo nativo Qt equivalente al convertirlos a QVariant.
| Constante | Valor | Descripción |
|---|---|---|
QJSValue::ConvertJSObjects | 0 | Se intenta una conversión con el mejor esfuerzo, posiblemente con pérdidas. Los símbolos se convierten a QString. |
QJSValue::RetainJSObjects | 1 | El valor se conserva como QJSValue envuelto en QVariant. |
enum QJSValue::SpecialValue
Este enum se utiliza para especificar un tipo de valor único.
| Constante | Valor | Descripción |
|---|---|---|
QJSValue::UndefinedValue | 1 | Un valor indefinido. |
QJSValue::NullValue | 0 | Un valor nulo. |
Documentación de las funciones miembro
QJSValue::QJSValue(QJSValue::SpecialValue value = UndefinedValue)
Construye un nuevo QJSValue con un value especial.
QJSValue::QJSValue(bool value)
Construye un nuevo QJSValue con un booleano value.
QJSValue::QJSValue(const QLatin1String &value)
Construye un nuevo QJSValue con una cadena value.
QJSValue::QJSValue(const QString &value)
Construye un nuevo QJSValue con una cadena value.
QJSValue::QJSValue(const char *value)
Construye un nuevo QJSValue con una cadena value.
QJSValue::QJSValue(double value)
Construye un nuevo QJSValue con un número value.
QJSValue::QJSValue(int value)
Construye un nuevo QJSValue con un número value.
QJSValue::QJSValue(uint value)
Construye un nuevo QJSValue con un número value.
QJSValue::QJSValue(const QJSValue &other)
Construye un nuevo QJSValue que es una copia de other.
Tenga en cuenta que si other es un objeto (es decir, isObject() devolvería true), entonces sólo se copia una referencia al objeto subyacente en el nuevo valor de script (es decir, no se copia el objeto en sí).
QJSValue::QJSValue(QJSValue &&other)
Constructor Move. Mueve de other a este objeto QJSValue.
[noexcept] QJSValue::~QJSValue()
Destruye este QJSValue.
QJSValue QJSValue::call(const QJSValueList &args = QJSValueList()) const
Llama a este QJSValue como una función, pasando args como argumentos a la función, y usando el globalObject() como el objeto "this". Devuelve el valor devuelto por la función.
Si este QJSValue no es invocable, call() no hace nada y devuelve un QJSValue indefinido.
Llamar a call() puede causar que ocurra una excepción en el motor de script; en ese caso, call() devuelve el valor que fue lanzado (típicamente un objeto Error ). Puede llamar a isError() sobre el valor devuelto para determinar si se ha producido una excepción.
Véase también isCallable(), callWithInstance() y callAsConstructor().
QJSValue QJSValue::callAsConstructor(const QJSValueList &args = QJSValueList()) const
Crea un nuevo Object y llama a este QJSValue como constructor, utilizando el objeto creado como el objeto `this' y pasando args como argumentos. Si el valor de retorno de la llamada al constructor es un objeto, entonces se devuelve dicho objeto; en caso contrario, se devuelve el objeto construido por defecto.
Si este QJSValue no es una función, callAsConstructor() no hace nada y devuelve un QJSValue indefinido.
Llamar a esta función puede causar que ocurra una excepción en el motor de script; en ese caso, el valor que fue lanzado (típicamente un objeto Error ) es devuelto. Puede llamar a isError() sobre el valor devuelto para determinar si se ha producido una excepción.
Véase también call() y QJSEngine::newObject().
QJSValue QJSValue::callWithInstance(const QJSValue &instance, const QJSValueList &args = QJSValueList()) const
Llama a este QJSValue como una función, usando instance como el objeto `this' en la llamada a la función, y pasando args como argumentos a la función. Devuelve el valor devuelto por la función.
Si este QJSValue no es una función, call() no hace nada y devuelve un QJSValue indefinido.
Tenga en cuenta que si instance no es un objeto, el objeto global (véase QJSEngine::globalObject()) se utilizará como el objeto `this'.
Llamar a call() puede causar una excepción en el motor de scripts; en ese caso, call() devuelve el valor que fue lanzado (típicamente un objeto Error ). Puede llamar a isError() sobre el valor devuelto para determinar si se ha producido una excepción.
Véase también call().
bool QJSValue::deleteProperty(const QString &name)
Intenta borrar la propiedad de este objeto de la dirección name. Devuelve true si la propiedad ha sido borrada, en caso contrario devuelve false.
El comportamiento de esta función es consistente con el operador delete de JavaScript. En particular:
- Las propiedades no configurables no pueden ser borradas.
- Esta función devolverá true incluso si este objeto no tiene una propiedad del tipo name (es decir, las propiedades inexistentes son "trivialmente borrables").
- Si este objeto no tiene una propiedad propia del name dado, pero un objeto de la cadena prototype() sí la tiene, la propiedad del objeto prototipo no se borra, y esta función devuelve true.
Véase también setProperty() y hasOwnProperty().
bool QJSValue::equals(const QJSValue &other) const
Devuelve true si este QJSValue es igual a other, en caso contrario devuelve false. La comparación sigue el comportamiento descrito en la sección 11.9.3 de ECMA-262, "Algoritmo abstracto de comparación de igualdad".
Esta función puede devolver verdadero incluso si el tipo de este QJSValue es diferente del tipo del valor other; es decir, la comparación no es estricta. Por ejemplo, comparar el número 9 con la cadena "9" devuelve verdadero; comparar un valor indefinido con un valor nulo devuelve verdadero; comparar un objeto Number cuyo valor primitivo es 6 con un objeto String cuyo valor primitivo es "6" devuelve verdadero; y comparar el número 1 con el valor booleano true devuelve verdadero. Si desea realizar una comparación sin dicha conversión implícita de valores, utilice strictlyEquals().
Tenga en cuenta que si este QJSValue o el valor other son objetos, llamar a esta función tiene efectos secundarios en el motor de script, ya que el motor llamará a la función valueOf() del objeto (y posiblemente a toString()) en un intento de convertir el objeto en un valor primitivo (posiblemente provocando una excepción de script no capturada).
Véase también strictlyEquals().
QJSValue::ErrorType QJSValue::errorType() const
Devuelve el tipo de error que representa este QJSValue si es un objeto Error. En caso contrario, devuelve NoError."
Véase también isError() y QJSEngine - Script Exceptions.
bool QJSValue::hasOwnProperty(const QString &name) const
Devuelve true si este objeto tiene una propiedad propia (no heredada del prototipo) del name dado, en caso contrario devuelve false.
Véase también property() y hasProperty().
bool QJSValue::hasProperty(const QString &name) const
Devuelve true si este objeto tiene una propiedad del tipo name, en caso contrario devuelve false.
Véase también property() y hasOwnProperty().
bool QJSValue::isArray() const
Devuelve true si este QJSValue es un objeto de la clase Array; en caso contrario devuelve false.
Nota: Este método es el equivalente de Array.isArray() en JavaScript. Puede utilizarlo para identificar matrices JavaScript, pero devolverá false para cualquier objeto similar a una matriz que no sea una matriz JavaScript. Esto incluye objetos de lista QML para tipos de valor o tipos de objeto, matrices tipadas JavaScript, objetos ArrayBuffer JavaScript y cualquier objeto personalizado similar a una matriz que pueda crear usted mismo. Todos ellos se comportan como arrays de JavaScript: Por lo general, exponen los mismos métodos y el operador de subíndice se puede utilizar en ellos. Por lo tanto, no es aconsejable utilizar este método para determinar si un objeto puede utilizarse como una matriz.
Véase también QJSEngine::newArray().
bool QJSValue::isBool() const
Devuelve true si este QJSValue es del tipo primitivo Boolean; en caso contrario devuelve false.
Véase también toBool().
bool QJSValue::isCallable() const
Devuelve true si este QJSValue es una función, en caso contrario devuelve false.
Véase también call().
bool QJSValue::isDate() const
Devuelve true si este QJSValue es un objeto de la clase Date; en caso contrario devuelve false.
bool QJSValue::isError() const
Devuelve true si este QJSValue es un objeto de la clase Error; en caso contrario devuelve false.
Véase también errorType() y QJSEngine - Script Exceptions.
bool QJSValue::isNull() const
Devuelve true si este QJSValue es del tipo primitivo Null; en caso contrario devuelve false.
bool QJSValue::isNumber() const
Devuelve true si este QJSValue es del tipo primitivo Number; en caso contrario devuelve false.
Véase también toNumber().
bool QJSValue::isObject() const
Devuelve true si este QJSValue es de tipo Object; en caso contrario devuelve false.
Tenga en cuenta que los valores de función, los valores de variante y los valores de QObject son objetos, por lo que esta función devuelve true para dichos valores.
Véase también QJSEngine::newObject().
bool QJSValue::isQMetaObject() const
Devuelve true si este QJSValue es un QMetaObject; en caso contrario devuelve false.
Véase también toQMetaObject() y QJSEngine::newQMetaObject().
bool QJSValue::isQObject() const
Devuelve true si este QJSValue es un QObject; en caso contrario devuelve false.
Nota: Esta función devuelve true incluso si el QObject que envuelve este QJSValue ha sido borrado.
Véase también toQObject() y QJSEngine::newQObject().
bool QJSValue::isRegExp() const
Devuelve true si este QJSValue es un objeto de la clase RegExp; en caso contrario devuelve false.
bool QJSValue::isString() const
Devuelve true si este QJSValue es del tipo primitivo String; en caso contrario devuelve false.
Véase también toString().
bool QJSValue::isUndefined() const
Devuelve true si este QJSValue es del tipo primitivo Undefined o si el valor gestionado ha sido borrado (borrando el motor). En caso contrario devuelve false.
bool QJSValue::isUrl() const
Devuelve true si este QJSValue es un objeto de la clase URL JavaScript; en caso contrario devuelve false.
Nota: Para un QJSValue que contiene un QUrl, esta función devuelve false. Sin embargo, toVariant().value<QUrl>() funciona en ambos casos.
QJSValue QJSValue::property(const QString &name) const
Devuelve el valor de la propiedad de este QJSValue con el valor dado name. Si no existe tal propiedad, se devuelve undefined QJSValue.
Si la propiedad se implementa utilizando una función getter (es decir, tiene el indicador PropertyGetter activado), la llamada a property() tiene efectos secundarios en el motor de script, ya que se llamará a la función getter (posiblemente provocando una excepción de script no capturada). Si se produce una excepción, property() devuelve el valor que se lanzó (normalmente un objeto Error ).
Para acceder a elementos de matriz, utilice en su lugar la sobrecarga setProperty(quint32 arrayIndex, const QJSValue &value).
Véase también setProperty(), hasProperty() y QJSValueIterator.
QJSValue QJSValue::property(quint32 arrayIndex) const
Devuelve la propiedad en la dirección arrayIndex.
Es posible acceder a los elementos de una matriz de dos maneras. La primera es utilizar el índice del array como nombre de la propiedad:
qDebug() << jsValueArray.property(QLatin1String("4")).toString();
La segunda es utilizar la sobrecarga que toma un índice:
qDebug() << jsValueArray.property(4).toString();
Ambas aproximaciones consiguen el mismo resultado, excepto que la segunda:
- Es más fácil de usar (puede usar un entero directamente)
- Es más rápido (no hay conversión a entero)
Si este QJSValue no es un objeto Array, esta función se comporta como si se llamara a property() con la representación de cadena de arrayIndex.
Se trata de una función sobrecargada.
QJSValue QJSValue::prototype() const
Si este QJSValue es un objeto, devuelve el prototipo interno (__proto__ propiedad) de este objeto; en caso contrario devuelve un indefinido QJSValue.
Véase también setPrototype() y isObject().
void QJSValue::setProperty(const QString &name, const QJSValue &value)
Establece el valor de la propiedad de este QJSValue con el name dado al value dado.
Si este QJSValue no es un objeto, esta función no hace nada.
Si este QJSValue no tiene ya una propiedad con el nombre name, se crea una nueva propiedad.
Para modificar elementos de un array, utilice en su lugar la sobrecarga setProperty(quint32 arrayIndex, const QJSValue &value).
Véase también property() y deleteProperty().
void QJSValue::setProperty(quint32 arrayIndex, const QJSValue &value)
Establece la propiedad en el arrayIndex dado al value dado.
Es posible modificar elementos de un array de dos formas. La primera es utilizar el índice del array como nombre de la propiedad:
jsValueArray.setProperty(QLatin1String("4"), value);
La segunda es utilizar la sobrecarga que toma un índice:
jsValueArray.setProperty(4, value);
Ambas aproximaciones consiguen el mismo resultado, excepto que la segunda:
- Es más fácil de usar (puede usar un entero directamente)
- Es más rápido (no hay conversión a entero)
Si este QJSValue no es un objeto Array, esta función se comporta como si se llamara a setProperty() con la representación de cadena de arrayIndex.
Se trata de una función sobrecargada.
Véase también property(quint32 arrayIndex) y Working With Arrays.
void QJSValue::setPrototype(const QJSValue &prototype)
Si este QJSValue es un objeto, establece el prototipo interno (propiedad__proto__ ) de este objeto a prototype; si el QJSValue es nulo, establece el prototipo a nulo; en caso contrario no hace nada.
El prototipo interno no debe confundirse con la propiedad pública con nombre "prototype"; el prototipo público normalmente sólo se establece en funciones que actúan como constructores.
Véase también prototype() y isObject().
bool QJSValue::strictlyEquals(const QJSValue &other) const
Devuelve true si este QJSValue es igual a other usando comparación estricta (sin conversión), en caso contrario devuelve false. La comparación sigue el comportamiento descrito en la sección 11.9.6 de ECMA-262, "Algoritmo de comparación de igualdad estricta".
Si el tipo de este QJSValue es diferente del tipo del valor other, esta función devuelve false. Si los tipos son iguales, el resultado depende del tipo, como se muestra en la siguiente tabla:
| Tipo | Resultado |
|---|---|
| Indefinido | verdadero |
| Nulo | verdadero |
| Booleano | verdadero si los valores son ambos verdaderos o ambos falsos, falso en caso contrario |
| Número | false si alguno de los valores es NaN (Not-a-Number); true si los valores son iguales, false en caso contrario |
| Cadena | true si ambos valores son exactamente la misma secuencia de caracteres, false en caso contrario |
| Objeto | true si ambos valores se refieren al mismo objeto, false en caso contrario |
Véase también equals().
bool QJSValue::toBool() const
Devuelve el valor booleano de este QJSValue, utilizando las reglas de conversión descritas en ECMA-262 sección 9.2, "ToBoolean".
Tenga en cuenta que si este QJSValue es un objeto, llamar a esta función tiene efectos secundarios en el motor de script, ya que el motor llamará a la función valueOf() del objeto (y posiblemente a toString()) en un intento de convertir el objeto en un valor primitivo (posiblemente provocando una excepción de script no capturada).
Véase también isBool().
QDateTime QJSValue::toDateTime() const
Devuelve una representación QDateTime de este valor, en hora local. Si este QJSValue no es una fecha, o el valor de la fecha es NaN (Not-a-Number), se devuelve un QDateTime inválido.
Véase también isDate().
qint32 QJSValue::toInt() const
Devuelve el valor entero de 32 bits con signo de este QJSValue, utilizando las reglas de conversión descritas en ECMA-262 sección 9.5, "ToInt32".
Tenga en cuenta que si este QJSValue es un objeto, la llamada a esta función tiene efectos secundarios en el motor de script, ya que el motor llamará a la función valueOf() del objeto (y posiblemente a toString()) en un intento de convertir el objeto en un valor primitivo (posiblemente provocando una excepción de script no capturada).
Véase también toNumber() y toUInt().
double QJSValue::toNumber() const
Devuelve el valor numérico de este QJSValue, como se define en ECMA-262 sección 9.3, "ToNumber".
Tenga en cuenta que si este QJSValue es un objeto, la llamada a esta función tiene efectos secundarios en el motor de script, ya que el motor llamará a la función valueOf() del objeto (y posiblemente a toString()) en un intento de convertir el objeto en un valor primitivo (posiblemente provocando una excepción de script no capturada).
Véase también isNumber(), toInt(), y toUInt().
QJSPrimitiveValue QJSValue::toPrimitive() const
Convierte el valor en un QJSPrimitiveValue. Si el valor es de un tipo admitido por QJSPrimitiveValue, se copia el valor. De lo contrario, el valor se convierte en una cadena, y la cadena se almacena en QJSPrimitiveValue.
Nota: La conversión de un valor gestionado a una cadena puede lanzar una excepción. En particular, los símbolos no pueden ser coaccionados en cadenas, o un método personalizado toString() puede lanzar. En este caso el resultado es el valor indefinido y el motor lleva un error después de la conversión.
const QMetaObject *QJSValue::toQMetaObject() const
* Si este QJSValue es un QMetaObject, devuelve el puntero QMetaObject * que representa el QJSValue; en caso contrario, devuelve nullptr. * *
Véase también isQMetaObject().
QObject *QJSValue::toQObject() const
Si este QJSValue es un QObject, devuelve el puntero QObject que el QJSValue representa; en caso contrario, devuelve nullptr.
Si el QObject que envuelve este QJSValue ha sido borrado, esta función devuelve nullptr (es decir, es posible que toQObject() devuelva nullptr incluso cuando isQObject() devuelva true).
Véase también isQObject().
QString QJSValue::toString() const
Devuelve el valor de cadena de este QJSValue, como se define en ECMA-262 sección 9.8, "ToString".
Tenga en cuenta que si este QJSValue es un objeto, la llamada a esta función tiene efectos secundarios en el motor de script, ya que el motor llamará a la función toString() del objeto (y posiblemente a valueOf()) en un intento de convertir el objeto en un valor primitivo (posiblemente provocando una excepción de script no capturada).
Véase también isString().
quint32 QJSValue::toUInt() const
Devuelve el valor entero de 32 bits sin signo de este QJSValue, utilizando las reglas de conversión descritas en ECMA-262 sección 9.6, "ToUint32".
Tenga en cuenta que si este QJSValue es un objeto, la llamada a esta función tiene efectos secundarios en el motor de script, ya que el motor llamará a la función valueOf() del objeto (y posiblemente a toString()) en un intento de convertir el objeto en un valor primitivo (posiblemente provocando una excepción de script no capturada).
Véase también toNumber() y toInt().
QVariant QJSValue::toVariant(QJSValue::ObjectConversionBehavior behavior) const
Devuelve el valor QVariant de este QJSValue, si se puede convertir a un QVariant; de lo contrario devuelve un QVariant inválido. Algunos tipos y objetos JavaScript tienen expresiones nativas en Qt. Estos se convierten a sus expresiones nativas. Por ejemplo
| Tipo Input | Resultado |
|---|---|
| No definido | Un QVariant no válido . |
| Nulo | Un QVariant que contiene un puntero nulo (QMetaType::Nullptr). |
| Booleano | Un QVariant que contiene el valor del booleano. |
| Número | Un QVariant que contiene el valor del número. |
| Cadena | Un QVariant que contiene el valor de la cadena. |
| QVariant Objeto | El resultado es el valor QVariant del objeto (sin conversión). |
| QVariantMap Objeto | Un QVariant que contiene el QVariantMap almacenado en el objeto (sin conversión). |
| QVariantHash Objeto | Un QVariant que contiene el QVariantHash almacenado en el objeto (sin conversión). |
| QObject Objeto | Un QVariant que contiene un puntero al QObject. |
| Fecha Objeto | Un QVariant que contiene el valor de la fecha (toDateTime()). |
| RegularExpression Objeto | Un QVariant que contiene el valor de la expresión regular. |
Para otros tipos, el parámetro behavior es relevante. Si se indica ConvertJSObjects, se intentará realizar una conversión con pérdidas. Los objetos JavaScript genéricos se convierten a QVariantMap. Las matrices de JavaScript se convierten a QVariantList. Cada propiedad o elemento se convierte a QVariant, recursivamente; no se siguen las referencias cíclicas. Los objetos de función JavaScript se descartan. Si se proporciona RetainJSObjects, QJSValue se envuelve en QVariant mediante QVariant::fromValue(). La conversión resultante no tiene pérdidas, pero la estructura interna de los objetos no es inmediatamente accesible.
Véase también isVariant().
QVariant QJSValue::toVariant() const
Devuelve toVariant(ConvertJSObjects).
Esta es una función sobrecargada.
Véase también isVariant().
QJSValue &QJSValue::operator=(QJSValue &&other)
Mueve-asigna other a este objeto QJSValue.
QJSValue &QJSValue::operator=(const QJSValue &other)
Asigna el valor other a este QJSValue.
Tenga en cuenta que si other es un objeto (isObject() devuelve true), sólo se asignará una referencia al objeto subyacente; el objeto en sí no se copiará.
© 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.