QtScript:如何重新加载当前脚本?

标签 qt qtscript

QScriptEngine有evaluate()方法,可用于加载脚本、执行脚本以及从已加载的脚本运行指定的函数。但是如何清除当前脚本并加载新脚本呢?例如,我使用评估()从文件加载脚本,然后使用评估()获取脚本函数并调用它们。但是我可以做什么来清除当前脚本并从不同的文件加载新脚本?删除和创建 QScriptEngine 似乎是一个解决方案,但它喜欢在 GUI 线程中创建(由于 QScriptEngineDebugger),而所有脚本操作都在单独的线程中执行。那么有没有办法在不重新创建 QScriptEngine 对象的情况下清除当前脚本?

最佳答案

engine.pushContext();
engine.evaluate("...");
engine.popContext();
engine.pushContext();
engine.evaluate("...");
engine.popContext();

在评估脚本之前调用pushContext()以及在评估新脚本之前调用popContext()将有效地清除所有脚本数据。

关于QtScript:如何重新加载当前脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2040921/

相关文章:

继承QWidget的Javascript对象

c++ - 在 Qt 类的 getter 中按值返回

qt - 连接到 QtScript(在 Qt 4.5.2 上)中的信号的函数不会触发

由于 QSslSocket 的 setLocalCertificate,Qt 控制台应用程序崩溃

c++ - 在循环中更改指针

c++ - 如何使用 QTextEdit 模拟类似 shell 的脚本环境?

python - QtScript 内省(introspection)/反射(reflection)?

javascript - 仅在通过脚本访问时未定义属性

c++ - 从表格中的坐标用 QVector 填充 QScatterDataArray

c++ - Qt在定时器上改变图片