我正在尝试调用一个在C++中实现的函数来调用JS函数,该函数将使用QT QJSEngine进行求值。
到目前为止,我已经尝试过了
class Person : public QObject {
Q_OBJECT
public:
Q_INVOKABLE cppFunction(int a);
};我的函数评估如下所示
QJSValue formulaFunction = jsEngine->evaluate("(function(" + functionArgList.join(",") + "){ " + formula + "})");在公式中,我有一个对cppFunction的调用,functionArgList提供了参数,这些工作很好,我已经检查过了。所以,但不知何故它没有被调用,我也没有得到一个错误。我是不是遗漏了什么,还是应该这样做?
发布于 2021-08-04 14:50:07
所以,经过一些研究,我让它运行起来。
class MyObject : public QObject{
Q_OBJECT
public:
Q_INVOKABLE MyObject() {}
Q_INVOKABLE bool hasChannel(int id);
};
QJSEngine engine;
QJSValue injectedObject;
injectedObject= engine.newQMetaObject(&MyObject::staticMetaObject);
engine.globalObject().setProperty("MyObject", injectedObject);所以,在这里我要创建一个继承自QObject的新类。这个类有两个方法,我想在QJSEngine中调用的每个方法都必须在方法声明的前面提供Q_INVOKABLE标签。
由引擎运行的示例JS代码将如下所示
let myObject = new MyObject();
myObject.hasChannel(1234);我不知道注入前缀是否合适,但我想不出更好的前缀了
https://stackoverflow.com/questions/68649274
复制相似问题