我正在将 QScriptEngine 代码迁移到 QJSEngine。我现在有:
class pars
{
public:
static QScriptValue PrintMainLog(QScriptContext* c, QScriptEngine* e);
};
QScriptValue pars::PrintMainLog(QScriptContext* c, QScriptEngine* e)
{
//some actions
return e->globalObject().property("");
}
...
QScriptEngine engine;
...
engine.globalObject().setProperty("PrintLog",engine.newFunction(pars::PrintMainLog));
所以,用户可以把 PrintLog("what ever"); 例如,在我的应用程序中, QLineEdit 和函数 pars::PrintMainLog 将进行评估。
QJSEngine有什么方法可以做到这一点吗?那么,用户是否放置了相同的 PrintLog("what ever");?我找到的唯一方法是在这里,所以用户应该输入类似 Logger.PrintLog("what ever"); 其中 Logger 是从 QObject 继承的具有 PrintLog 插槽的类。