C++ QT 在QJSEngine中调用C++函数
C++ QT Call C++ function in QJSEngine
我正在尝试调用一个用 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 提供了参数,这些工作正常,我已经检查过了。
所以,但不知何故它没有被调用,我也没有收到错误。我是不是遗漏了什么或者它应该这样工作吗?
所以,经过一些研究,我得到了 运行宁。
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);
所以,我在这里创建了一个新的 class,它继承自 QObject。
class 有两个方法,我想在 QJSEngine 中调用的每个方法都必须在方法声明前面提供 Q_INVOKABLE 标签。
引擎的示例 JS 代码 运行 如下所示
let myObject = new MyObject();
myObject.hasChannel(1234);
我不知道注入的前缀是否合适,但我想不出更好的
我正在尝试调用一个用 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 提供了参数,这些工作正常,我已经检查过了。 所以,但不知何故它没有被调用,我也没有收到错误。我是不是遗漏了什么或者它应该这样工作吗?
所以,经过一些研究,我得到了 运行宁。
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);
所以,我在这里创建了一个新的 class,它继承自 QObject。 class 有两个方法,我想在 QJSEngine 中调用的每个方法都必须在方法声明前面提供 Q_INVOKABLE 标签。
引擎的示例 JS 代码 运行 如下所示
let myObject = new MyObject();
myObject.hasChannel(1234);
我不知道注入的前缀是否合适,但我想不出更好的