- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们喂 QScriptEngine
使用以下脚本:
var foo = 1;
var bar = 2;
foo + bar
来自QScriptEngine::evaluate()
,我们会得到一个 QScriptValue
返回值可以转换回等于 3 的 int
。
另一方面,如果我们输入 QScriptEngine
使用脚本:
var foo = 1;
var bar = 2;
那我们如何访问脚本在堆上创建的foo
和bar
的值呢?
以MATLAB(Python IDLE同理)为例。我可以读取脚本文件,脚本创建的变量仍可用于命令提示符。
我正在考虑在 Qt 中做同样的事情:
QString
QScriptEngine::evaluate()
来评估QString
但我不知道如何获取脚本创建的那些 var
。
附言脚本可能非常复杂,不仅仅是竞争变量,我只是尽量让问题更简单。
最佳答案
如果变量是全局的,那么它们可以在 global object 中访问(通过 globalObject()
方法)。来自文档:
...Non-local variables in script code will be created as properties of the Global Object, as well as local variables in global code.
简而言之,您必须先获取全局对象,然后再获取 iterate通过它的属性来读取它们的值 property()方法(请注意,您只需使用脚本中的变量):
QScriptValueIterator it(engine.globalObject());
while (it.hasNext()) {
it.next();
qDebug() << it.name() << ": " << it.value().toString();
}
关于c++ - 访问 QScriptEngine 在堆上创建的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27542268/
给出这段代码,我得到:“对'QScriptEngine::QScriptEngine() 的 undefined reference ” #include ... QScriptEngine e;
有人可以向我解释如何在 QScriptEngine 扩展中获得命名空间吗?我已经设置好了,所以我在 script/下有一个目录 foo/,其中正在执行一个 __init__.js 文件。 __setu
我想通过这个方法: QScriptValue ScriptProcessContext::construct(QScriptContext * ctx, QScriptEngine *) {
[问题] 假设我们喂 QScriptEngine使用以下脚本: var foo = 1; var bar = 2; foo + bar 来自QScriptEngine::evaluate() ,我们会
我使用 QScriptEngine::evaluate(QString code) 在我的 Qt 应用程序中评估 JavaScript .假设我评估了一段有问题的 JavaScript,它会永远循环(
我创建了一个 QScriptEngine 并公开了一个我可以从 js 脚本调用的对象函数。 engine->globalObject().setProperty("obj", myObj); myOb
我正在尝试优化我的一个函数中的 QScriptEngine 操作。 函数名为executeCustomJSOperation,它在多个文件中执行相同的JS代码。但是,每个文件都需要更改名为 $xmlD
让我们以一个简单的类为例: QScriptEngine engine; class MyClass { public: QScriptValue foo(QScriptContext*, QS
我需要访问 QWebFrame 中的 javascript QScriptEngine。这可能吗? 好吧,至少我认为我需要访问它。为了响应 javascript 调用,我需要分配一个新对象,将其返回给
我需要实现一个简单的数学表达式计算器,例如 1+2*(3.4 + 0.1) 我认为使用实现这些东西会很容易 QScriptEngine::evaluate() 但是有一个问题:一些无效的表达式被认为是
我需要在单独的非 GUI 线程中处理脚本,因为脚本调用 C++ 函数可能需要很长时间才能处理(秒)。是否可以在非 gui 线程中将 QScriptEngineDebugger 连接到我的 QScrip
我正在尝试将 QVariantMap 转换为 Qt Script 对象。如果我理解正确的话,它应该是这样的: QScriptEngine* engine = new QScriptEngine();
在Qt 4.8 的脚本引擎中,“本地”变量可以通过obtaining a QScriptContext from QScriptEngine::pushContext then setting the
[背景] QScriptEngine 的默认print() 函数将结果打印到 Qt Creator IDE 的终端以进行调试。因此,如果我们要自己制作 ECMA 脚本解释器,则必须将输出重定向到我们的
我是一名优秀的程序员,十分优秀!