Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QScriptValue类作为一个容器Qt的脚本数据类型。More...
该QScriptValue类作为一个容器Qt的脚本数据类型。
QScriptValue支持在中定义的类型 ECMA-262标准:基元类型,它是未定义,为null ,布尔,数字和字符串;和对象类型。此外, Qt的脚本有内置的支持QVariant,QObject和QMetaObject。
对于基于对象类型(包括Date和RegExp ) ,使用NEWT ( )函数QScriptEngine(例如QScriptEngine.newObject() )来创建所需类型的QScriptValue 。对于原始类型,使用QScriptValue构造函数重载之一。
命名为T ( )的方法(例如isBool( )isUndefined() )可以被用来测试一个值是否是特定类型的。命名为TOT ( )方法(例如toBool( )toString()) can be used to convert a QScriptValue to another type. You can also use the generic qscriptvalue_cast() function.
Object values have zero or more properties which are themselves QScriptValues. Use setProperty() to set a property of an object, and call property() to retrieve the value of a property.
QScriptEngine myEngine; QScriptValue myObject = myEngine.newObject(); QScriptValue myOtherObject = myEngine.newObject(); myObject.setProperty("myChild", myOtherObject); myObject.setProperty("name", "John Doe");
Each property can have a set of attributes; these are specified as the third (optional) argument to setProperty(). The attributes of a property can be queried by calling the propertyFlags() function. The following code snippet creates a property that cannot be modified by script code:
QScriptValue val(&myEngine, 123); myObject.setProperty("myReadOnlyProperty", val, QScriptValue.ReadOnly);
如果你想遍历一个脚本对象的属性,使用QScriptValueIterator类。
对象的值有一个内部prototype属性,该属性可以被访问prototype()和setPrototype( ) 。属性添加到原型由具有该原型中的所有对象共享,这被称为基于原型的继承。在实践中,这意味着(默认)的property( )函数将自动尝试查找看在财产prototype( )(和的原型prototype() ,等等) ,如果对象本身不具有所需的特性。请注意,不是由执行这个原型基于查找setProperty();setProperty( )总是会在脚本对象本身创造的财产。欲了解更多信息,请参阅QtScript文档。
函数对象(对象的isFunction( )返回True )可以通过调用来调用call( ) 。构造函数可以用来构造新的对象通过调用construct( ) 。
使用equals( )strictlyEquals()和lessThan( )到QScriptValue比较到另一个。
对象的值可以有与它们相关联的自定义数据,见setData()和data()函数。默认情况下,这个数据是不可访问的脚本,它可以用来存储你想要用脚本对象相关联的任何数据。通常,这是通过使用自定义类对象(见QScriptClass)来存储一个C + +类,它包含了“原生”对象数据。
请注意,一个QScriptValue的量isObject( )是真实的,只有带有一个参考的实际对象;复制QScriptValue将只复制对象的引用,而不是对象本身。如果你想克隆一个对象(即一个对象的属性复制到另一个对象) ,你可以用一个帮助做for-in声明脚本代码,或QScriptValueIterator在C + + 。
这个枚举描述属性的特性。
Constant | Value | Description |
---|---|---|
QScriptValue.ReadOnly | 0x00000001 | 该属性是只读的。通过Qt的脚本代码试图写入该属性将被忽略。 |
QScriptValue.Undeletable | 0x00000002 | 试图通过Qt的脚本代码delete该属性将被忽略。 |
QScriptValue.SkipInEnumeration | 0x00000004 | 该物业不能由一个枚举for-in枚举。 |
QScriptValue.PropertyGetter | 0x00000008 | 该物业由一个将被调用来获得属性值函数定义。 |
QScriptValue.PropertySetter | 0x00000010 | 该物业由一个将被调用来设置属性值函数定义。 |
这个标志被用于表示一个现有的属性是一个QObject成员(属性或方法) 。
Constant | Value | Description |
---|---|---|
QScriptValue.KeepExistingFlags | 0x00000800 | 这个值被用来表示setProperty( )该物业的标志应保持不变。如果属性不存在,则默认标志( 0 )将被使用。 |
标志在此范围内不使用Qt的脚本,并且可以用于定制的目的。
该PropertyFlags类型是一个typedef为QFlags\u003cPropertyFlag\u003e 。它存储PropertyFlag值的或组合。
此枚举指定如何查找某个对象的属性。
Constant | Value | Description |
---|---|---|
QScriptValue.ResolveLocal | 0x00 | 只检查对象自己的属性。 |
QScriptValue.ResolvePrototype | 0x01 | 检查对象本身的属性,然后再搜索原型链。这是默认的。 |
检查对象本身的属性,然后再搜索作用域链。
检查对象本身的属性,然后再搜索原型链,最后搜索的作用域链。
该ResolveFlags类型是一个typedef为QFlags\u003cResolveFlag\u003e 。它存储ResolveFlag值的或组合。
此枚举用于指定一个单值类型。
Constant | Value | Description |
---|---|---|
QScriptValue.UndefinedValue | 1 | 一个未定义的值。 |
QScriptValue.NullValue | 0 | null值。 |
构造一个无效的QScriptValue。
构造一个新的QScriptValue即副本other。
注意,如果other本发明的目的(即,isObject( )将返回True ) ,那么只有一个参照相关对象被复制到新的脚本值(即,对象本身不会被复制) 。
构造一个新的QScriptValue用特别的value。
此功能被引入Qt的4.5 。
构造一个新的QScriptValue用布尔value。
此功能被引入Qt的4.5 。
构造一个新的QScriptValue以数字value。
此功能被引入Qt的4.5 。
调用此QScriptValue作为一个功能,用thisObject在函数调用中的' this'对象,并通过args作为参数传递给函数。返回从函数返回的值。
如果这QScriptValue是不是一个函数,调用( )不执行任何操作,并返回一个无效的QScriptValue。
注意,如果thisObject是不是一个对象,全局对象(见QScriptEngine.globalObject() )将被用作`这个'对象。
调用调用( )可能会导致异常发生在脚本引擎,在这种情况下, ()调用返回抛出的值(通常是Error对象) 。您可以致电QScriptEngine.hasUncaughtException( ) ,以确定是否发生了异常。
QScriptEngine engine; engine.evaluate("function fullName() { return this.firstName + ' ' + this.lastName; }"); engine.evaluate("somePerson = { firstName: 'John', lastName: 'Doe' }"); QScriptValue global = engine.globalObject(); QScriptValue fullName = global.property("fullName"); QScriptValue who = global.property("somePerson"); qDebug() << fullName.call(who).toString(); // "John Doe" engine.evaluate("function cube(x) { return x * x * x; }"); QScriptValue cube = global.property("cube"); QScriptValueList args; args << 3; qDebug() << cube.call(QScriptValue(), args).toNumber(); // 27
See also construct( ) 。
调用此QScriptValue作为一个功能,用thisObject在函数调用中的' this'对象,并通过arguments作为参数传递给函数。返回从函数返回的值。
如果这QScriptValue不是一个函数,call( )不执行任何操作,并返回一个无效的QScriptValue。
arguments可以是一个参数对象,数组, null或undefined ;任何其他类型将导致一个TypeError异常被抛出。
注意,如果thisObject是不是一个对象,全局对象(见QScriptEngine.globalObject() )将被用作`这个'对象。
这个功能的一个常见用法是原生函数调用转发到另一个函数:
QScriptValue myNativeFunction(QScriptContext *ctx, QScriptEngine *) { QScriptValue otherFunction = ...; return otherFunction.call(ctx->thisObject(), ctx->argumentsObject()); }
See also construct()和QScriptContext.argumentsObject( ) 。
创建一个新的Object并调用这个QScriptValue作为一个构造函数,使用创建的对象作为` this'对象和传球args作为参数。如果从构造函数调用的返回值是一个对象,则该对象被返回,否则默认的构造的对象返回。
如果这QScriptValue是不是一个函数,构造( )不执行任何操作,并返回一个无效的QScriptValue。
调用构造( )可能会导致异常发生在脚本引擎,在这种情况下,构建()返回一个被抛出(通常是一个值Error对象) 。您可以致电QScriptEngine.hasUncaughtException( ) ,以确定是否发生了异常。
See also call()和QScriptEngine.newObject( ) 。
创建一个新的Object并调用这个QScriptValue作为一个构造函数,使用创建的对象作为` this'对象和传球arguments作为参数。如果从构造函数调用的返回值是一个对象,则该对象被返回,否则默认的构造的对象返回。
如果这QScriptValue不是一个函数,construct( )不执行任何操作,并返回一个无效的QScriptValue。
arguments可以是一个参数对象,数组, null或undefined 。任何其他类型将导致一个TypeError异常被抛出。
See also call( )QScriptEngine.newObject()和QScriptContext.argumentsObject( ) 。
返回此内部数据QScriptValue对象。QtScript使用这个属性来存储日期,字符串,数字和布尔对象的原始值。对于其他类型的对象,自定义数据可以使用存储setData( ) 。
此功能被引入Qt的4.4 。
See also setData( ) 。
返回QScriptEngine创建此QScriptValue,或者0 ,如果这QScriptValue无效或值不与特定的发动机相关联。
返回True如果QScriptValue等于other,否则返回False 。比较如下所述的行为 ECMA-26211.9.3节, “抽象相等比较算法” 。
这个函数可以返回真实的,即使这种类型QScriptValue是的类型不同other值,即比较不严格。例如, 9号比较字符串“ 9”返回True ;一个未定义的值进行比较,以空值返回True ;一个比较Number对象,其原始值是6到String对象,其原始值“6”返回True ;和数字1比较的布尔值true返回True。如果你想执行一个比较没有这样的隐式数值转换,使用strictlyEquals( ) 。
注意,如果这个QScriptValue或other值是对象,调用这个函数对脚本引擎的副作用,因为引擎会调用对象的valueOf()的函数(也可能toString( ) ) ,试图将对象转换为原始值(可能导致一个未捕获的脚本异常) 。
See also strictlyEquals()和lessThan( ) 。
返回True如果QScriptValue是的一个实例other否则返回False 。
This QScriptValue被认为是一个实例other如果other是一个函数和的值prototype物业other是在原型的这条产业链QScriptValue。
返回True如果QScriptValue是Array类的一个对象,否则返回False 。
See also QScriptEngine.newArray( ) 。
返回True如果QScriptValue是原始的Boolean类型,否则返回False 。
此功能被引入Qt的4.5 。
See also toBool( ) 。
返回True如果QScriptValue是Date类的一个对象,否则返回False 。
See also QScriptEngine.newDate( ) 。
返回True如果QScriptValue是Error类的一个对象,否则返回False 。
See also QScriptContext.throwError( ) 。
返回True如果QScriptValue是一个函数,否则返回False 。
See also call( ) 。
返回True如果QScriptValue是原始类型的Null ;否则返回False。
See also QScriptEngine.nullValue( ) 。
返回True如果QScriptValue是的基本类型数,否则返回False 。
See also toNumber( ) 。
返回True如果QScriptValue是Object类型,否则返回False 。
需要注意的是函数值,变量值和QObject值是对象,所以对于这样的值该函数返回True 。
See also toObject()和QScriptEngine.newObject( ) 。
返回True如果QScriptValue是QMetaObject否则返回False 。
See also toQMetaObject()和QScriptEngine.newQMetaObject( ) 。
返回True如果QScriptValue是QObject否则返回False 。
注意:这个函数返回True ,即使QObject这QScriptValue包裹已被删除。
See also toQObject()和QScriptEngine.newQObject( ) 。
返回True如果QScriptValue是设置了RegExp类的一个对象,否则返回False 。
See also QScriptEngine.newRegExp( ) 。
返回True如果QScriptValue是原始类型为String ,否则返回False 。
See also toString( ) 。
返回True如果QScriptValue是未定义的原始类型,否则返回False 。
See also QScriptEngine.undefinedValue( ) 。
返回True如果QScriptValue是有效的,否则返回False 。
返回True如果QScriptValue是一个变量的值,否则返回False 。
See also toVariant()和QScriptEngine.newVariant( ) 。
返回True如果QScriptValue小于other,否则返回False 。比较如下所述的行为 ECMA-26211.8.5节, “抽象关系比较算法” 。
注意,如果这个QScriptValue或other值是对象,调用这个函数对脚本引擎的副作用,因为引擎会调用对象的valueOf()的函数(也可能toString( ) ) ,试图将对象转换为原始值(可能导致一个未捕获的脚本异常) 。
See also equals( ) 。
返回此值QScriptValue的属性与给定的name,使用给定的mode为解决该房产。
如果没有这样的属性存在,无效QScriptValue返回。
如果属性是使用一个getter函数实现的(即有PropertyGetter标志设置) ,要求财产( )对脚本引擎的副作用,因为getter函数将被调用(可能导致一个未捕获的脚本异常) 。如果发生异常,财产( )返回被抛出(通常是一个值Error对象) 。
See also setProperty( )propertyFlags()和QScriptValueIterator。
返回此值QScriptValue的属性与给定的name,使用给定的mode为解决该房产。
这种超负荷property当你需要查找同一个属性重复,因为查询的速度就会加快,当名字被表示为一个字符串实习()是非常有用的。
此功能被引入Qt的4.4 。
See also QScriptEngine.toStringHandle()和setProperty( ) 。
这是一个重载函数。
返回属性在给定arrayIndex,使用给定的mode为解决该房产。
此功能与数组对象时提供了方便和性能。
如果这QScriptValue是不是一个Array对象,这个函数的行为就像property( )被调用的字符串表示形式arrayIndex。
返回属性的标志与给定name,使用给定的mode为解决该房产。
See also property( ) 。
返回属性的标志与给定name,使用给定的mode为解决该房产。
此功能被引入Qt的4.4 。
See also property( ) 。
如果这QScriptValue是一个对象,返回内部原型(__proto__此对象的属性) ,否则返回一个无效的QScriptValue。
See also setPrototype()和isObject( ) 。
返回自定义类的脚本,此脚本对象的一个实例,或者0,如果对象是一个自定义类的没有。
此功能被引入Qt的4.4 。
See also setScriptClass( ) 。
设置内部data这QScriptValue对象。您可以使用此功能来设置,将不会直接访问脚本对象的具体数据,但可以检索在C + +中使用data()函数。
此功能被引入Qt的4.4 。
See also data()和QScriptEngine.reportAdditionalMemoryCost( ) 。
设置这个值QScriptValue的属性与给定的name为给定的value。
如果这QScriptValue不是一个对象,这个函数不执行任何操作。
如果这QScriptValue不已经有名称的属性name,一个新的属性被创建;给定的flags然后指定这个属性可以通过脚本代码来访问。
If value是无效的,该属性被删除。
如果属性是使用setter函数实现的(即有PropertySetter标志设置) ,调用的setProperty ( )对脚本引擎的副作用,因为setter函数将被调用给定的value作为参数(可能导致一个未捕获的脚本异常) 。
请注意,您不能为指定自定义的getter或setter函数内置属性,如lengthArray对象或元属性的属性QObject对象。
See also property( ) 。
设置这个值QScriptValue的属性与给定的name为给定的value。给定flags指定此属性可以通过脚本代码来访问。
这种超负荷setProperty当你需要多次设置相同的属性,因为可以执行的操作时,速度更快的名字被表示为一个字符串实习()是非常有用的。
此功能被引入Qt的4.4 。
See also QScriptEngine.toStringHandle( ) 。
这是一个重载函数。
设置该属性在给定arrayIndex为给定的value。
此功能与数组对象时提供了方便和性能。
如果这QScriptValue是不是一个Array对象,这个函数的行为就像setProperty( )被调用的字符串表示形式arrayIndex。
如果这QScriptValue是一个对象,设置内部原型(__proto__这个对象是物业)prototype否则什么都不做。
内部原型不应该与公共财产名称为“原型”混淆;公众原型通常只设置在充当构造函数。
See also prototype()和isObject( ) 。
设置此脚本对象的自定义脚本类scriptClass。这可以用来“推动”(例如通过在脚本中“新”运算符创建一个简单的脚本对象,或者通过QScriptEngine.newObject(中) C + +)到自定义类型的对象。
If scriptClass为0时,该对象将被降级为普通的脚本对象。
此功能被引入Qt的4.4 。
See also scriptClass()和setData( ) 。
返回True如果QScriptValue等于other使用严格的比较(无转换) ,否则返回False 。比较如下所述的行为 ECMA-26211.9.6节, “严格相等比较算法” 。
如果这种类型QScriptValue是的类型不同other值,此函数返回False 。如果类型相同,则结果取决于类型,如下面的表中:
Type | Result |
---|---|
Undefined | true |
Null | true |
Boolean | true if both values are true, false otherwise |
Number | false if either value is NaN (Not-a-Number); true if values are equal, false otherwise |
String | true if both values are exactly the same sequence of characters, false otherwise |
Object | true if both values refer to the same object, false otherwise |
See also equals( ) 。
返回此布尔值QScriptValue使用中所描述的转换规则 ECMA-262第9.2节, “ ToBoolean ” 。
注意,如果这个QScriptValue是一个对象,调用这个函数对脚本引擎的副作用,因为引擎会调用对象的valueOf()的函数(也可能toString( ) ) ,试图将对象转换为原始值(可能导致一个未捕获的脚本异常) 。
此功能被引入Qt的4.5 。
See also isBool( ) 。
返回QDateTime这个值的表示,在本地时间。如果这QScriptValue是不是一个日期,或者日期的值是NaN (非数字号码) ,无效QDateTime返回。
See also isDate( ) 。
返回此签名的32位整数值QScriptValue使用中所描述的转换规则 ECMA-262第9.5节“ ToInt32 ” 。
注意,如果这个QScriptValue是一个对象,调用这个函数对脚本引擎的副作用,因为引擎会调用对象的valueOf()的函数(也可能toString( ) ) ,试图将对象转换为原始值(可能导致一个未捕获的脚本异常) 。
See also toNumber()和toUInt32( ) 。
返回此整数值QScriptValue使用中所描述的转换规则 ECMA-2629.4节, “ ToInteger ” 。
注意,如果这个QScriptValue是一个对象,调用这个函数对脚本引擎的副作用,因为引擎会调用对象的valueOf()的函数(也可能toString( ) ) ,试图将对象转换为原始值(可能导致一个未捕获的脚本异常) 。
See also toNumber( ) 。
返回此数值QScriptValue,如在定义 ECMA-262第9.3节, “ ToNumber ” 。
注意,如果这个QScriptValue是一个对象,调用这个函数对脚本引擎的副作用,因为引擎会调用对象的valueOf()的函数(也可能toString( ) ) ,试图将对象转换为原始值(可能导致一个未捕获的脚本异常) 。
See also isNumber( )toInteger( )toInt32( )toUInt32()和toUInt16( ) 。
如果这QScriptValue是QMetaObject,返回QMetaObject指针的QScriptValue代表,否则返回0 。
See also isQMetaObject( ) 。
如果这QScriptValue是QObject,返回QObject指针的QScriptValue代表,否则返回0 。
如果QObject这QScriptValue包裹已被删除,这个函数返回0 (即它有可能为toQObject ( )为0 ,即使返回isQObject( )返回True ) 。
See also isQObject( ) 。
返回QRegExp这个值表示。如果这QScriptValue是不是正则表达式,空QRegExp返回。
See also isRegExp( ) 。
返回此字符串值QScriptValue,如在定义 ECMA-262第9.8节“的ToString ” 。
注意,如果这个QScriptValue是一个对象,调用这个函数对脚本引擎的副作用,因为引擎会调用对象的toString ( )函数(以及可能的valueOf ( ) ) ,试图将对象转换为原始值(可能导致一个未捕获脚本异常) 。
See also isString( ) 。
返回此的无符号16位整型值QScriptValue使用中所描述的转换规则 ECMA-2629.7节, “ ToUint16 ” 。
注意,如果这个QScriptValue是一个对象,调用这个函数对脚本引擎的副作用,因为引擎会调用对象的valueOf()的函数(也可能toString( ) ) ,试图将对象转换为原始值(可能导致一个未捕获的脚本异常) 。
See also toNumber( ) 。
返回此的无符号32位整型值QScriptValue使用中所描述的转换规则 ECMA-262第9.6节“ ToUint32 ” 。
注意,如果这个QScriptValue是一个对象,调用这个函数对脚本引擎的副作用,因为引擎会调用对象的valueOf()的函数(也可能toString( ) ) ,试图将对象转换为原始值(可能导致一个未捕获的脚本异常) 。
See also toNumber()和toInt32( ) 。
返回QVariant这个值QScriptValue,如果它可以被转换成一个QVariant否则返回一个无效的QVariant。该转换是根据下面的表执行:
Input Type | Result |
---|---|
Undefined | An invalid QVariant. |
Null | An invalid QVariant. |
Boolean | A QVariant containing the value of the boolean. |
Number | A QVariant containing the value of the number. |
String | A QVariant containing the value of the string. |
QVariant Object | The result is the QVariant value of the object (no conversion). |
QObject Object | A QVariant containing a pointer to the QObject. |
Date Object | A QVariant containing the date value (toDateTime()). |
RegExp Object | A QVariant containing the regular expression value (toRegExp()). |
Array Object | The array is converted to a QVariantList. Each element is converted to a QVariant, recursively; cyclic references are not followed. |
Object | The object is converted to a QVariantMap. Each property is converted to a QVariant, recursively; cyclic references are not followed. |
See also isVariant( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |