0

私は QtScript と QScriptDebugger を使用していくつかの実装を作成しようとしていますが、次のトピックに関する情報を誰かが持っているのだろうか.

QtScriptDebugger の関数 attachTo() を使用する場合、ドキュメントでは、「カスタム」QScriptAgent を設定し、スクリプトの実行に関してさらに監視したい場合は、プロキシ エージェントを作成し、必要なイベントをこれに転送する必要があると記載されています。 ScriptDebugger によって ScriptEngine に設定された「カスタム」スクリプト エンジン。

では、この種のプロキシ エージェントを作成または実装してイベントを転送するにはどうすればよいでしょうか? このようなものの背後にある主なアイデア/コンセプトは理解できたと思いますが、ウェブ上で何も見つけることができず、まだ理解していないので、助けを求めています.

うまくいけば、誰かがこのトピックに関する情報を持っています!

前もって感謝します!

4

1 に答える 1

0

私が覚えている限り、次の方法QtScriptDebuggerと組み合わせて使用​​ する必要があります。QtScriptEngine

QtScriptEngine *engine = new QtScriptEngine();
engine->setProcessEventsInterval(50); // this is required to prevent your interface from hanging up during using of debugger
QScriptEngineDebugger *scriptDebugger = new QScriptEngineDebugger(engine);
scriptDebugger->setAutoShowStandardWindow(true); // this makes the debugger window to appear when 'debugger;' instruction occurs
scriptDebugger->attachTo(engine); // this incorporates your script engine with its debugger
// ...
// your custom manipulations follows
// ...

// suppose you have some script attributes set
QMap<QString, QScriptValue> scriptAttributes;

// setup global attributes used in your scripts
QScriptValue global = engine->globalObject();
foreach (const QString &varName, scriptAttributes.keys()) {
    global.setProperty(varName, scriptAttributes.value(varName));
}

// check script syntax
QScriptSyntaxCheckResult syntaxResult = engine->checkSyntax(scriptText);
if (QScriptSyntaxCheckResult::Valid != syntaxResult.state()) {
   // report syntax error
}

// run the script
QScriptValue result = engine->evaluate(scriptText);

if (engine->hasUncaughtException()) {
    /// report script run-time error
    qDebug() << QString("Exception during script execution! Line: %1, error: %2")
                    .arg(engine->uncaughtExceptionLineNumber()).arg(engine->uncaughtExceptionBacktrace().join("\n");
}

したがって、スクリプト テキストにコマンドを追加するとdebugger;、デバッガ ウィンドウが表示されます。

于 2013-06-19T16:38:24.360 に答える