我正在浏览 Qt Scripting 的文档,如果指导文本错误,它会完全令人困惑和完整。有人可以用简单的英语解释如何包装一个函数并在包装后在脚本代码中访问它。我在下面包含了我的示例。包装函数。这是一个简单的包装器,我需要返回作为参数传递的字符串。以下是代码。
#include <QApplication>
#include <QtScript/QScriptEngine>
#include <QtScript/QScriptContext>
#include <QDebug>
QScriptValue returnProperty(QScriptContext *context , QScriptEngine *engine)
{
qDebug() << "running returnValues Function "<< context->argument(0).toString();
return context->thisObject().property("returnValue");
}
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
QScriptEngine engine;
//Evaluating a simple expression
qDebug() << engine.evaluate("1+2").toNumber();
QScriptValue func = engine.globalObject();
func.setProperty("foo",engine.newFunction(returnProperty),QScriptValue::PropertyGetter);
engine.evaluate("var v= foo('name') ; print( 'This prints values from addValues function :',v) ;");
}
输出如下
3
Running returnValues Function "undefined"
如果我正确理解这一点,这就是我应该做的,如果我调用 engine.newObject() ,因为它在 doc 函数中提到,甚至不会被调用。
我在这里没有得到的是,我在 func.setproperty 行中分配的属性是什么,一旦我设置了属性 foo 我可以做什么。如何在函数中设置值。
如果有人解释我在这里做错了什么,我将不胜感激。