QScriptEngineAgent and QtScriptDebugger
QScriptEngineAgent and QtScriptDebugger
我一直在尝试使用QtScript和QScriptDebugger进行一些实现,但我想知道是否有人有关于以下主题的信息。
当使用QtScriptDebugger的函数attachTo()时,在文档中它说它设置了一个"自定义"QScriptAgent,如果我想对我的脚本执行进行更多的监控,我应该创建一个代理代理,并将所需的事件转发到由ScriptDebugger设置的这个"自定义"脚本引擎到ScriptEngine。
那么我如何制作或实现这种代理代理来转发事件呢?我想我得到了这个东西背后的主要思想/概念,但我只是在网上找不到任何东西,我还没有弄清楚,所以这就是为什么我寻求一些帮助。
希望有人有关于这个话题的一些信息!提前感谢!
据我所知,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;
命令,调试器窗口应该出现
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- python ctypes and C++ pointers
- C++ const char with .begin() and .end()
- Threads with Classes and std::packaged_task
- QScriptEngineAgent and QtScriptDebugger