本页内容

QJSValue Class

QJSValue 类充当 Qt/JavaScript 数据类型的容器。更多内容...

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

公共类型

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

公共函数

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)

详细说明

QJSValue 支持ECMA-262标准中定义的类型:基本类型(包括 Undefined、Null、Boolean、Number 和 String)以及 Object 和 Array 类型。此外,还内置支持 Qt/C++ 类型,例如QVariant 和QObject 。

对于基于对象的类型(包括 Date 和 RegExp),请使用QJSEngine 中的 newT() 函数(例如QJSEngine::newObject()) 来创建所需类型的 QJSValue。对于基本类型,请使用 QJSValue 的构造函数重载之一。 对于其他类型(例如已注册的小工具类型,如QPoint ),可以使用QJSEngine::toScriptValue 。

名为 isT() 的方法(例如isBool()、isUndefined())可用于检测一个值是否属于特定类型。名为 toT() 的方法(例如toBool()、toString())可用于将 QJSValue 转换为另一种类型。 您还可以使用通用的 qjsvalue_cast() 函数。

对象值拥有零个或多个属性,这些属性本身也是 QJSValue。使用setProperty() 设置对象的属性,并调用property() 获取属性的值。

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

若要遍历脚本对象的属性,请使用QJSValueIterator 类。

对象值具有一个内部的prototype 属性,可通过prototype() 和setPrototype() 访问。

函数对象(即对isCallable()返回true的对象)可通过调用call()来调用。构造函数可通过调用callAsConstructor()来创建新对象。

使用equals() 或strictlyEquals() 比较两个 QJSValue。

请注意,对于isObject() 返回值为 true 的 QJSValue,它仅包含对实际对象的引用;复制该 QJSValue 只会复制对象引用,而非对象本身。 如果要克隆一个对象(即把一个对象的属性复制到另一个对象上),可以在脚本代码中使用for-in 语句,或者在 C++ 中使用QJSValueIterator 。

数组操作

要使用 QJSValue 创建数组,请使用QJSEngine::newArray():

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

要设置数组中的单个元素,请使用setProperty(quint32 arrayIndex, const QJSValue &value) 重载。例如,要将上述数组填充为整数:

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

要确定数组的长度,请访问"length" 属性。要访问数组元素,请使用property(quint32 arrayIndex)重载。以下代码将我们上面创建的数组读回列表中:

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

转换为 JSON

可以将 QJSValue 转换为 JSON 类型。例如,要转换为数组,请使用QJSEngine::fromScriptValue():

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

另请参阅 QJSEngine 和QJSValueIterator 。

成员类型文档

enum QJSValue::ErrorType

请将此枚举用于 JavaScript 语言特有的 Error 对象类型。

当在 C++ 中模拟语言特性需要使用特化的异常类型时,这些类型可能会派上用场。此外,它们有助于更清晰地表达某些典型情况,而非抛出通用的 JavaScript 异常。例如,处理网络和资源定位器的代码,可能需要使用 URIError 类型来传播与格式错误的定位器相关的错误。

常量值描述
QJSValue::GenericError1一个通用的 Error 对象,但不属于特定的子类型。
QJSValue::RangeError3值与预期的集合或范围不匹配。
QJSValue::ReferenceError4引用了不存在的变量。
QJSValue::SyntaxError5遇到一个无效的标记或标记序列,该标记或序列不符合该语言的语法。
QJSValue::TypeError6一个操作数或参数与预期的类型不兼容。
QJSValue::URIError7URI 处理函数使用不当,或者提供的 URI 格式不正确。

enum QJSValue::ObjectConversionBehavior

此枚举用于指定在将JavaScript对象和符号转换为QVariant 时,对于没有对应原生Qt类型的对象和符号应如何处理。

常量值描述
QJSValue::ConvertJSObjects0尝试进行尽最大努力的转换,可能会有数据丢失。符号将转换为QString 。
QJSValue::RetainJSObjects1该值将作为由QVariant 包装的QJSValue 保留下来。

enum QJSValue::SpecialValue

此枚举用于指定单值类型。

常量值描述
QJSValue::UndefinedValue1未定义的值。
QJSValue::NullValue0一个空值。

成员函数文档

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

创建一个带有特殊value 的新QJSValue对象。

QJSValue::QJSValue(bool value)

创建一个新的 QJSValue,其value 属性为布尔值。

QJSValue::QJSValue(const QLatin1String &value)

使用字符串value 构建一个新的QJSValue对象。

QJSValue::QJSValue(const QString &value)

使用字符串value 构建一个新的QJSValue。

QJSValue::QJSValue(const char *value)

使用字符串value 创建一个新的QJSValue。

QJSValue::QJSValue(double value)

创建一个新的 QJSValue 对象,其数值为value 。

QJSValue::QJSValue(int value)

创建一个新的 QJSValue 对象,其数值为value 。

QJSValue::QJSValue(uint value)

创建一个包含数值value 的新 QJSValue 对象。

QJSValue::QJSValue(const QJSValue &other)

构建一个新的 QJSValue,它是other 的副本。

请注意,如果 `other ` 是一个对象(即 `isObject()` 会返回 true),则只有对底层对象的引用会被复制到新的脚本值中(即对象本身不会被复制)。

QJSValue::QJSValue(QJSValue &&other)

移动构造函数。将数据从 `other ` 移动到此 `QJSValue` 对象中。

[noexcept] QJSValue::~QJSValue()

删除此链接:QJSValue 。

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

将此QJSValue 作为函数调用,将args 作为该函数的参数传递,并将globalObject()用作“this”对象。返回该函数返回的值。

如果该QJSValue 不可调用,则call()不会执行任何操作,并返回一个未定义的QJSValue 。

调用 call() 可能会导致脚本引擎中发生异常;在这种情况下,call() 将返回被抛出的值(通常是一个Error 对象)。您可以对返回值调用isError() 来确定是否发生了异常。

另请参阅 isCallable()、callWithInstance() 和callAsConstructor()。

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

创建一个新的Object ,并调用该对象的QJSValue 方法作为构造函数,将创建的对象作为`this`对象,并将args 作为参数传递。如果构造函数调用的返回值是一个对象,则返回该对象;否则返回默认构造的对象。

如果该 `QJSValue ` 不是函数,则 `callAsConstructor()` 不执行任何操作,并返回一个未定义的 `QJSValue`。

调用此函数可能会导致脚本引擎中发生异常;在此情况下,将返回被抛出的值(通常是一个Error 对象)。您可以对返回值调用isError() 来确定是否发生了异常。

另请参阅 call() 和QJSEngine::newObject()。

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

将QJSValue 作为函数调用,在函数调用中使用instance 作为 `this` 对象,并将args 作为参数传递给该函数。返回该函数返回的值。

如果该QJSValue 不是函数,则call() 不会执行任何操作,并返回一个未定义的QJSValue 。

请注意,如果 `instance ` 不是一个对象,则会使用全局对象(参见 `QJSEngine::globalObject()`)作为 `this` 对象。

调用call() 可能会导致脚本引擎中发生异常;在这种情况下,call() 会返回被抛出的值(通常是一个Error 对象)。您可以对返回值调用isError() 来判断是否发生了异常。

另请参阅 call()。

bool QJSValue::deleteProperty(const QString &name)

尝试删除该对象中指定name 的属性。如果属性已被删除,则返回true;否则返回false。

此函数的行为与 JavaScript 的 delete 运算符一致。具体而言:

  • 不可配置的属性无法被删除。
  • 即使该对象不具有指定name 的属性,此函数仍会返回true(即不存在的属性“可轻易删除”)。
  • 如果该对象本身不具有指定name 的属性,但prototype()链中的某个对象具有该属性,则原型对象的属性不会被删除,且该函数返回true。

另请参阅 setProperty() 和hasOwnProperty()。

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

如果该QJSValue 与other 相等,则返回true;否则返回false。该比较遵循ECMA-262第11.9.3节“抽象相等比较算法”中描述的行为。

即使该QJSValue 的类型与other 值的类型不同,此函数仍可能返回true;即该比较并非严格比较。 例如,将数字 9 与字符串“9”进行比较会返回 true;将未定义值与 null 值进行比较会返回 true;将原始值为 6 的Number 对象与原始值为“6”的String 对象进行比较会返回 true;将数字 1 与布尔值true 进行比较会返回 true。 若要执行不涉及此类隐式值转换的比较,请使用strictlyEquals()。

请注意,如果此 `QJSValue ` 或 `other ` 值是对象,调用此函数会对脚本引擎产生副作用,因为引擎将调用该对象的 `valueOf()` 函数(并可能调用 `toString()`),以尝试将该对象转换为基本类型值(这可能会导致未捕获的脚本异常)。

另请参阅 strictlyEquals()。

QJSValue::ErrorType QJSValue::errorType() const

如果该QJSValue 是Error对象,则返回其代表的错误类型。否则,返回NoError."

另请参阅 isError() 和QJSEngine - Script Exceptions 。

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

如果该对象拥有指定name 的自有属性(而非通过原型继承的属性),则返回true;否则返回false。

另请参阅 property() 和hasProperty()。

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

如果该对象具有指定name 的属性,则返回true;否则返回false。

另请参阅 property() 和hasOwnProperty()。

bool QJSValue::isArray() const

如果该QJSValue 是Array类的对象,则返回true;否则返回false。

注意:此 方法相当于 JavaScript 中的Array.isArray()。 您可以使用它来识别 JavaScript 数组,但对于任何非 JavaScript 数组的数组样式对象,它都会返回 `false `。这包括 QML列表对象(无论是值类型还是对象类型)、JavaScript 类型化数组、JavaScript `ArrayBuffer` 对象,以及您自己可能创建的任何自定义数组样式对象。 不过,所有这些对象的行为都与JavaScript 数组类似:它们通常提供相同的方法,并且可以使用下标运算符。因此,不建议使用此方法来判断一个对象是否可以像数组一样使用。

另请参阅 ` QJSEngine::newArray()`。

bool QJSValue::isBool() const

如果该QJSValue 属于基本类型Boolean,则返回true;否则返回false。

另请参阅 toBool()。

bool QJSValue::isCallable() const

如果该QJSValue 是函数,则返回true;否则返回false。

另请参阅 call()。

bool QJSValue::isDate() const

如果该QJSValue 是Date类的实例,则返回true;否则返回false。

bool QJSValue::isError() const

如果该QJSValue 是Error类的实例,则返回true;否则返回false。

另请参阅 errorType() 和QJSEngine - Script Exceptions 。

bool QJSValue::isNull() const

如果该QJSValue 属于基本类型Null,则返回true;否则返回false。

bool QJSValue::isNumber() const

如果该QJSValue 属于基本类型Number,则返回true;否则返回false。

另请参阅 toNumber()。

bool QJSValue::isObject() const

如果该QJSValue 属于Object类型,则返回true;否则返回false。

请注意,函数值、变体值和QObject 值都是对象,因此对于此类值,该函数返回true。

另请参阅 QJSEngine::newObject()。

bool QJSValue::isQMetaObject() const

如果此QJSValue 是QMetaObject ,则返回true;否则返回false。

另请参阅 toQMetaObject() 和QJSEngine::newQMetaObject()。

bool QJSValue::isQObject() const

如果该QJSValue 是QObject ,则返回true;否则返回false。

注意:即使该QJSValue 所封装的QObject 已被删除,此函数仍会返回 true。

另请参阅 toQObject() 和QJSEngine::newQObject()。

bool QJSValue::isRegExp() const

如果该QJSValue 是RegExp类的实例,则返回true;否则返回false。

bool QJSValue::isString() const

如果该QJSValue 属于基本类型String,则返回true;否则返回false。

另请参阅 toString()。

bool QJSValue::isUndefined() const

如果该QJSValue 属于基本类型“Undefined”,或者该托管值已被清空(通过删除引擎),则返回true;否则返回false。

bool QJSValue::isUrl() const

如果该QJSValue 是 URL JavaScript 类的实例,则返回 true;否则返回 false。

注意:对于 包含 `QUrl` 的 `QJSValue `,此函数返回 `false`。不过,`toVariant().value<QUrl>() ` 在这两种情况下均可正常工作。

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

返回该QJSValue 属性在给定name 下的值。如果不存在该属性,则返回一个未定义的QJSValue 。

如果该属性是通过获取器函数实现的(即设置了 PropertyGetter 标志),调用 property() 会对脚本引擎产生副作用,因为获取器函数会被调用(这可能会导致未捕获的脚本异常)。 如果发生了异常,property() 将返回被抛出的值(通常是一个Error 对象)。

要访问数组元素,请改用setProperty(quint32 arrayIndex, const QJSValue &value) 重载。

另请参阅 setProperty()、hasProperty() 和QJSValueIterator 。

QJSValue QJSValue::property(quint32 arrayIndex) const

返回位于指定arrayIndex 处的属性。

访问数组中的元素有两种方法。第一种是将数组索引用作属性名:

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

第二种是使用接受索引的重载方法:

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

这两种方法都能得到相同的结果,只是后者:

  • 使用更便捷(可直接使用整数)
  • 速度更快(无需转换为整数)

如果此QJSValue 不是Array对象,则该函数的行为等同于调用property()并传入arrayIndex 的字符串表示形式。

这是一个重载函数。

QJSValue QJSValue::prototype() const

如果该QJSValue 是对象,则返回该对象的内部原型(__proto__ 属性);否则返回 undefinedQJSValue 。

另请参阅 setPrototype() 和isObject()。

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

将此QJSValue 的属性(其name 为给定值)的值设置为给定的value 。

如果该QJSValue 不是一个对象,则此函数不执行任何操作。

如果该QJSValue 尚未拥有名为name 的属性,则会创建一个新属性。

要修改数组元素,请改用setProperty(quint32 arrayIndex, const QJSValue &value) 重载。

另请参阅 property() 和deleteProperty()。

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

将位于指定arrayIndex 处的属性设置为指定的value 。

可以通过两种方式修改数组中的元素。第一种是使用数组索引作为属性名:

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

第二种方法是使用接受索引的重载方法:

jsValueArray.setProperty(4, value);

这两种方法都能达到相同的效果,只是后者:

  • 更易于使用(可直接使用整数)
  • 速度更快(无需转换为整数)

如果该 `QJSValue ` 不是 `Array` 对象,则该函数的行为相当于调用 `setProperty()` 并传入 `arrayIndex` 的字符串表示形式。

这是一个重载函数。

另请参阅 property(quint32 arrayIndex) 和Working With Arrays 。

void QJSValue::setPrototype(const QJSValue &prototype)

如果该QJSValue 是对象,则将该对象的内部原型(__proto__ 属性)设置为prototype ;如果QJSValue 为null,则将原型设置为null;否则不执行任何操作。

内部原型不应与名称为“prototype”的公共属性混淆;公共原型通常仅设置在充当构造函数的函数上。

另请参阅 prototype() 和isObject()。

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

如果该QJSValue 与other 在严格比较(不进行转换)下相等,则返回true;否则返回false。该比较遵循ECMA-262第11.9.6节“严格相等比较算法”中描述的行为。

如果此QJSValue 的类型与other 值的类型不同,则该函数返回false。如果类型相等,则结果取决于具体类型,如下表所示:

类型结果
未定义true
Nulltrue
布尔值若两个值均为真或均为假,则为真;否则为假
数字若任一值为 NaN(非数值),则为 false;若两个值相等,则为 true,否则为 false
字符串如果两个值是完全相同的字符序列,则返回 true;否则返回 false
对象如果两个值都指向同一个对象,则返回 true;否则返回 false

另请参阅 ` equals()`。

bool QJSValue::toBool() const

返回此QJSValue 的布尔值,采用ECMA-262第9.2节“ToBoolean”中描述的转换规则。

请注意,如果该QJSValue 是对象,调用此函数会对脚本引擎产生副作用,因为引擎会调用该对象的valueOf()函数(并可能调用toString()),以尝试将该对象转换为基本类型值(这可能会导致未捕获的脚本异常)。

另请参阅 isBool()。

QDateTime QJSValue::toDateTime() const

返回该值的QDateTime 表示形式,单位为本地时间。如果该QJSValue 不是日期,或者日期的值为NaN(非数值),则返回一个无效的QDateTime 。

另请参阅 isDate()。

qint32 QJSValue::toInt() const

返回此QJSValue 的带符号32位整数值,采用ECMA-262第9.5节“ToInt32”中描述的转换规则。

请注意,如果该QJSValue 是对象,调用此函数会对脚本引擎产生副作用,因为引擎会调用该对象的valueOf()函数(以及可能的toString()),以尝试将对象转换为基本类型值(这可能会导致未捕获的脚本异常)。

另请参阅 toNumber() 和toUInt()。

double QJSValue::toNumber() const

返回此QJSValue 的数值,如ECMA-262第9.3节“ToNumber”中所定义。

请注意,如果该QJSValue 是对象,调用此函数会对脚本引擎产生副作用,因为引擎会调用该对象的valueOf()函数(并可能调用toString()),以尝试将对象转换为基本类型值(这可能会导致未捕获的脚本异常)。

另请参阅 isNumber()、toInt() 和toUInt()。

QJSPrimitiveValue QJSValue::toPrimitive() const

将该值转换为QJSPrimitiveValue 。如果该值属于QJSPrimitiveValue 支持的类型,则直接复制该值。否则,该值将转换为字符串,并将该字符串存储在QJSPrimitiveValue 中。

注意:将 托管值转换为 字符串可能会抛出异常。特别是,符号无法强制转换为字符串,否则自定义的toString()方法可能会抛出异常。在这种情况下,结果为未定义值,且引擎在转换后会携带一个错误。

const QMetaObject *QJSValue::toQMetaObject() const

* 如果该QJSValue 是QMetaObject ,则返回该QJSValue 所表示的QMetaObject 指针*;否则,返回nullptr 。* *

另请参阅 isQMetaObject()。

QObject *QJSValue::toQObject() const

如果此QJSValue 是QObject ,则返回QJSValue 所表示的QObject 指针;否则,返回nullptr 。

如果此QJSValue 所封装的QObject 已被删除,则该函数返回nullptr (即,即使isQObject() 返回 true,toQObject() 仍可能返回nullptr )。

另请参阅 isQObject()。

QString QJSValue::toString() const

返回此QJSValue 的字符串值,如ECMA-262第9.8节“ToString”中所定义。

请注意,如果该QJSValue 是一个对象,调用此函数会对脚本引擎产生副作用,因为引擎会调用该对象的toString()函数(可能还会调用valueOf()),以尝试将该对象转换为基本类型值(这可能会导致未捕获的脚本异常)。

另请参阅 isString()。

quint32 QJSValue::toUInt() const

返回此QJSValue 的无符号32位整数值,采用ECMA-262第9.6节“ToUint32”中描述的转换规则。

请注意,如果该QJSValue 是对象,调用此函数会对脚本引擎产生副作用,因为引擎会调用该对象的valueOf()函数(以及可能的toString()),以尝试将对象转换为基本类型值(这可能会导致未捕获的脚本异常)。

另请参阅 toNumber() 和toInt()。

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

返回此QJSValue 的QVariant 值,如果它能转换为QVariant ;否则返回一个无效的QVariant 。某些JavaScript类型和对象在Qt中具有原生表达式,这些将被转换为其原生表达式。例如:

输入类型结果
未定义一个无效的QVariant 。
Null包含空指针(QMetaType::Nullptr )的QVariant 。
布尔值包含布尔值的QVariant 。
Number包含数字值的QVariant 。
字符串一个包含字符串值的QVariant 。
QVariant Object结果是该对象的QVariant 值(不进行转换)。
QVariantMap Object一个QVariant ,其中包含对象中存储的QVariantMap (不进行转换)。
QVariantHash Object一个QVariant ,其中包含对象中存储的QVariantHash (无转换)。
QObject 对象一个QVariant ,其中包含指向QObject 的指针。
日期对象一个QVariant ,其中包含日期值(toDateTime())。
RegularExpression 对象一个QVariant ,其中包含正则表达式值。

对于其他类型,behavior 参数是相关的。如果提供了ConvertJSObjects ,则会尝试进行尽最大努力但可能有数据丢失的转换。 通用的 JavaScript 对象将转换为 `QVariantMap`。JavaScript 数组将转换为 `QVariantList`。每个属性或元素都会递归地转换为 `QVariant`;循环引用不会被追踪。JavaScript 函数对象将被舍弃。如果指定了 `RetainJSObjects `,则会通过 `QVariant::fromValue()` 将 `QJSValue ` 包装为 `QVariant `。生成的转换结果无损,但无法直接访问对象的内部结构。

另请参阅 isVariant()。

QVariant QJSValue::toVariant() const

返回 toVariant(ConvertJSObjects)。

这是一个重载函数。

另请参阅 isVariant()。

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

将other 按值赋值给此QJSValue 对象。

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

将other 的值赋给此QJSValue 。

请注意,如果other 是一个对象(isObject()返回true),则仅会赋值其底层对象的引用;对象本身不会被复制。

相关的非成员

QJSValueList

这是一个对QList (<QJSValue>)的typedef定义。

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