Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QScriptEngineAgent类提供了一个接口来报告有关事件QScriptEngine执行。More...
该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( )被调用时,一个异常处理程序存在,并执行将在处理程序代码将被收回。
这个枚举指定可能的扩展到QScriptEngineAgent。
Constant | Value | Description |
---|---|---|
QScriptEngineAgent.DebuggerInvocationRequest | 0 | 代理手柄debugger脚本语句。 |
See also extension( ) 。
该engine的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个QScriptEngineAgent对象为给定的engine。
该发动机采用了代理的所有权。
Call QScriptEngine.setAgent( )使本剂中的活性剂。
在当前脚本上下文将要弹出这个函数被调用。
默认实现不执行任何操作。
See also contextPush()和functionExit( ) 。
这个函数被调用时,一个新的脚本上下文一直推。
默认实现不执行任何操作。
See also contextPop()和functionEntry( ) 。
返回QScriptEngine此代理相关联。
这个函数被调用的时候给出exception即将被捕获,在所确定的脚本scriptId。
如果你想处理此事件重新实现这个函数。
默认实现不执行任何操作。
See also exceptionThrow( ) 。
这个函数被调用的时候给出exception发生在发动机,在所确定的脚本scriptId。如果异常是由本地的Qt脚本函数抛出,scriptId是-1。
If hasHandler诚然,有一个catch or finally块将处理该异常。如果hasHandler是假的,没有异常处理程序。
如果你想处理此事件重新实现这个函数。例如,一个调试器可以当一个未捕获的异常发生时通知用户(即hasHandler是假的) 。
默认实现不执行任何操作。
See also exceptionCatch( ) 。
这个虚函数可以在重新实现QScriptEngineAgent子类以提供扩展的支持。可选的argument可以作为输入提供给extension;结果必须在一个形式被返回QVariant。您可以致电supportsExtension( )来检查一个扩展是支持的QScriptEngineAgent。默认情况下,没有扩展名的支持,这个函数返回一个无效QVariant。
如果实现DebuggerInvocationRequest扩展, Qt的脚本会调用这个函数时,debugger语句在脚本中遇到的问题。该argument是QVariantList包含三个项目:第一个项目是scriptId (长) ,第二项是行数(一个int ) ,第三项是列数(一个整数) 。
See also supportsExtension( ) 。
这个函数被调用时,一个脚本函数被调用的引擎。如果脚本的功能是不是原生的Qt脚本功能,它驻留在确定脚本scriptId否则,scriptId是-1。
这个函数被调用执行脚本函数的开始之前。你可以得到QScriptContext与函数调用相关QScriptEngine.currentContext( ) 。可传递给函数的参数。
重新实现这个函数来处理此事件。例如,一个调试器的实现可以重新实现这个函数(和functionExit())来跟踪调用堆栈和提供步骤,以上的功能。
默认实现不执行任何操作。
See also functionExit( )positionChange()和QScriptEngine.currentContext( ) 。
当目前执行的脚本函数即将返回该函数被调用。如果脚本的功能是不是原生的Qt脚本功能,它驻留在确定脚本scriptId否则,scriptId是-1。该returnValue是脚本函数将返回值。
只是脚本函数返回之前调用此函数。您仍然可以访问QScriptContext与脚本函数调用相关联QScriptEngine.currentContext( ) 。
如果发动机的hasUncaughtException( )函数返回True ,脚本函数退出,由于异常,否则,脚本函数正常返回。
重新实现这个函数来处理此事件,通常你会那么还需要重新实现functionEntry( ) 。
默认实现不执行任何操作。
See also functionEntry()和QScriptEngine.hasUncaughtException( ) 。
这个函数被调用当发动机即将在确定脚本执行一个新的语句scriptId。该语句开始由指定的行和列lineNumber是不是原生的Qt脚本函数生成此事件。
重新实现这个函数来处理此事件。例如,一个调试器的实现可以重新实现这个功能,提供线,由线步进,和一个分析器实现可以用它来计算被执行每个语句的次数。
默认实现不执行任何操作。
Note: columnNumber未定义
See also scriptLoad()和functionEntry( ) 。
这个函数被调用时,引擎解析的脚本,并与给定关联的它id。该ID可以用来识别在随后的事件通知这个特定的脚本。
program,fileName和baseLineNumber是原始参数的QScriptEngine.evaluate( )调用触发此事件。
这个函数被调用之前的脚本即将进行评估。
您可以重新实现此功能来记录关于脚本的信息,例如,通过保留脚本文本,你可以得到的文本行对应于一个后续调用一个行号positionChange( ) 。
默认实现不执行任何操作。
See also scriptUnload( ) 。
这个函数被调用时,引擎已经丢弃确定给定的脚本id。
您可以重新实现这个函数来清除任何已与脚本相关的资源。
默认实现不执行任何操作。
See also scriptLoad( ) 。
返回True如果QScriptEngineAgent支持给定extension否则,则返回False。默认情况下,没有扩展名的支持。
See also extension( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |