Home · All Classes · Modules  · QSS HELP  · QSS 案例 · VER007 HOME

QScriptEngineAgent Class Reference
[QtScript module]

该QScriptEngineAgent类提供了一个接口来报告有关事件QScriptEngine执行。More...

Types

Methods


Detailed Description

该QScriptEngineAgent类提供了一个接口来报告有关事件QScriptEngine执行。

该QScriptEngineAgent类是用来监视和/或控制的一个执行工具的基础QScriptEngine如调试器和分析器。

为了处理脚本加载和卸载事件,重新实现scriptLoad()和scriptUnload()函数。scriptLoad()被输入到后称为QScriptEngine.evaluate( )已经被解析,执行给定的脚本权利之前。该引擎可为每个脚本一个ID ,它可作为一个参数来scriptLoad();随后,其它事件处理程序可以使用该ID来识别特定的脚本。一个常见的用法scriptLoad( )是保留的脚本文本,文件名和底线号(原输入QScriptEngine.evaluate()),以使其他的事件处理程序可以例如一个行号映射到文本的相应的行。

scriptUnload( )被调用时,QScriptEngine已经不再使用的脚本;的QScriptEngineAgent可能在这一点上安全地丢弃任何与脚本(如脚本文本)相关联的资源。注意,后scriptUnload( )被调用时,QScriptEngine可重复使用相关的脚本ID为新脚本(即作为参数传递给后续调用scriptLoad())。

评价下面的脚本将导致scriptUnload( )被调用的评估完成后立即:

 var a = Math.random() + 2;

评价下面的脚本将\ B { }不导致调用scriptUnload( )当评估完成:

 function cube(a) {
     return a * a * a;
 }

 var a = cube(3);

该脚本不被卸载,因为它定义了一个函数(cube)保留在脚本环境评估已完成。如果后续的脚本中删除该cube功能(例如,通过将其设置为null) ,scriptUnload( )当函数被垃圾收集会被调用。一般而言,一个脚本不卸载,直到发动机已确定没有其内容被引用。

处理脚本函数调用和返回,重新实现functionEntry()和functionExit()函数。functionEntry( )当一个脚本函数将要执行的调用;functionExit()被调用时,一个脚本函数即将返回,无论是正常还是由于异常。

为了处理单个脚本语句,重新实现positionChange( ) 。positionChange()被调用每次引擎将要执行的脚本的一个新的语句,因此提供的脚本监控的最好水平。

为了处理异常,重新实现exceptionThrow()和exceptionCatch( ) 。exceptionThrow()被调用时,一个脚本异常被抛出,它已被处理之前。exceptionCatch( )被调用时,一个异常处理程序存在,并执行将在处理程序代码将被收回。


Type Documentation

QScriptEngineAgent.Extension

这个枚举指定可能的扩展到QScriptEngineAgent

Constant Value Description
QScriptEngineAgent.DebuggerInvocationRequest 0 代理手柄debugger脚本语句。

See also extension( ) 。


Method Documentation

QScriptEngineAgent.__init__ (self, QScriptEngine engine)

engine的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

构造一个QScriptEngineAgent对象为给定的engine

该发动机采用了代理的所有权。

Call QScriptEngine.setAgent( )使本剂中的活性剂。

QScriptEngineAgent.contextPop (self)

在当前脚本上下文将要弹出这个函数被调用。

默认实现不执行任何操作。

See also contextPush()和functionExit( ) 。

QScriptEngineAgent.contextPush (self)

这个函数被调用时,一个新的脚本上下文一直推。

默认实现不执行任何操作。

See also contextPop()和functionEntry( ) 。

QScriptEngine QScriptEngineAgent.engine (self)

返回QScriptEngine此代理相关联。

QScriptEngineAgent.exceptionCatch (self, int scriptId, QScriptValue exception)

这个函数被调用的时候给出exception即将被捕获,在所确定的脚本scriptId

如果你想处理此事件重新实现这个函数。

默认实现不执行任何操作。

See also exceptionThrow( ) 。

QScriptEngineAgent.exceptionThrow (self, int scriptId, QScriptValue exception, bool hasHandler)

这个函数被调用的时候给出exception发生在发动机,在所确定的脚本scriptId。如果异常是由本地的Qt脚本函数抛出,scriptId是-1。

If hasHandler诚然,有一个catch or finally块将处理该异常。如果hasHandler是假的,没有异常处理程序。

如果你想处理此事件重新实现这个函数。例如,一个调试器可以当一个未捕获的异常发生时通知用户(即hasHandler是假的) 。

默认实现不执行任何操作。

See also exceptionCatch( ) 。

QVariant QScriptEngineAgent.extension (self, Extension extension, QVariant argument = QVariant())

这个虚函数可以在重新实现QScriptEngineAgent子类以提供扩展的支持。可选的argument可以作为输入提供给extension;结果必须在一个形式被返回QVariant。您可以致电supportsExtension( )来检查一个扩展是支持的QScriptEngineAgent。默认情况下,没有扩展名的支持,这个函数返回一个无效QVariant

如果实现DebuggerInvocationRequest扩展, Qt的脚本会调用这个函数时,debugger语句在脚本中遇到的问题。该argumentQVariantList包含三个项目:第一个项目是scriptId (长) ,第二项是行数(一个int ) ,第三项是列数(一个整数) 。

See also supportsExtension( ) 。

QScriptEngineAgent.functionEntry (self, int scriptId)

这个函数被调用时,一个脚本函数被调用的引擎。如果脚本的功能是不是原生的Qt脚本功能,它驻留在确定脚本scriptId否则,scriptId是-1。

这个函数被调用执行脚本函数的开始之前。你可以得到QScriptContext与函数调用相关QScriptEngine.currentContext( ) 。可传递给函数的参数。

重新实现这个函数来处理此事件。例如,一个调试器的实现可以重新实现这个函数(和functionExit())来跟踪调用堆栈和提供步骤,以上的功能。

默认实现不执行任何操作。

See also functionExit( )positionChange()和QScriptEngine.currentContext( ) 。

QScriptEngineAgent.functionExit (self, int scriptId, QScriptValue returnValue)

当目前执行的脚本函数即将返回该函数被调用。如果脚本的功能是不是原生的Qt脚本功能,它驻留在确定脚本scriptId否则,scriptId是-1。该returnValue是脚本函数将返回值。

只是脚本函数返回之前调用此函数。您仍然可以访问QScriptContext与脚本函数调用相关联QScriptEngine.currentContext( ) 。

如果发动机的hasUncaughtException( )函数返回True ,脚本函数退出,由于异常,否则,脚本函数正常返回。

重新实现这个函数来处理此事件,通常你会那么还需要重新实现functionEntry( ) 。

默认实现不执行任何操作。

See also functionEntry()和QScriptEngine.hasUncaughtException( ) 。

QScriptEngineAgent.positionChange (self, int scriptId, int lineNumber, int columnNumber)

这个函数被调用当发动机即将在确定脚本执行一个新的语句scriptId。该语句开始由指定的行和列lineNumber是不是原生的Qt脚本函数生成此事件。

重新实现这个函数来处理此事件。例如,一个调试器的实现可以重新实现这个功能,提供线,由线步进,和一个分析器实现可以用它来计算被执行每个语句的次数。

默认实现不执行任何操作。

Note: columnNumber未定义

See also scriptLoad()和functionEntry( ) 。

QScriptEngineAgent.scriptLoad (self, int id, QString program, QString fileName, int baseLineNumber)

这个函数被调用时,引擎解析的脚本,并与给定关联的它id。该ID可以用来识别在随后的事件通知这个特定的脚本。

programfileNamebaseLineNumber是原始参数的QScriptEngine.evaluate( )调用触发此事件。

这个函数被调用之前的脚本即将进行评估。

您可以重新实现此功能来记录关于脚本的信息,例如,通过保留脚本文本,你可以得到的文本行对应于一个后续调用一个行号positionChange( ) 。

默认实现不执行任何操作。

See also scriptUnload( ) 。

QScriptEngineAgent.scriptUnload (self, int id)

这个函数被调用时,引擎已经丢弃确定给定的脚本id

您可以重新实现这个函数来清除任何已与脚本相关的资源。

默认实现不执行任何操作。

See also scriptLoad( ) 。

bool QScriptEngineAgent.supportsExtension (self, Extension extension)

返回True如果QScriptEngineAgent支持给定extension否则,则返回False。默认情况下,没有扩展名的支持。

See also extension( ) 。




PyQt 4.10.3 for X11 Copyright © Riverbank Computing Ltd and Nokia 2012 Qt 4.8.5