QScriptEngineAgent и QtScriptDebugger

Я пытался сделать некоторую реализацию, используя QtScript и QScriptDebugger, но мне интересно, есть ли у кого-нибудь информация по следующей теме.

При использовании функции attachTo () QtScriptDebugger в документации говорится, что он установил «настраиваемый» QScriptAgent и что, если я хотел бы иметь больше контроля относительно выполнения моего скрипта, я должен создать прокси-агент и перенаправить требуемые события этому «пользовательский» обработчик сценариев, установленный ScriptDebugger для ScriptEngine.

Итак, как я могу создать или реализовать прокси-агент такого рода для пересылки событий? Я думаю, что у меня есть основная идея / концепция, лежащая в основе всего этого, но я просто не могу найти что-либо в Интернете, и я еще не понял это, поэтому я прошу помощи.

Надеюсь, у кого-то есть информация по этой теме!

Заранее спасибо!

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; команда, должно появиться окно отладчика

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]