c++ - 使用带有 QScriptEngine::newFunction 的成员函数

标签 c++ qt qtscript

让我们以一个简单的类为例:

QScriptEngine engine;

class MyClass {
public:
    QScriptValue foo(QScriptContext*, QScriptEngine*);
    MyClass();
};

QScriptValue MyClass:foo(QScriptContext* context, QScriptEngine* eng) {
    //something
}

MyClass::MyClass() {
    QScriptValue self = engine.newFunction(this->foo, 0);
    ....
}

上面的函数给我一个错误: no matching function for call to ‘QScriptEngine::newFunction(<unresolved overloaded function type>, int)’

我试过使用 engine.newFunction(reinterpret_cast<FunctionSignature>(foo), 0);但这给了我一个错误,基本上说编译器不知道一个名为 'FunctionSignature' 的关键字。 .

感谢任何帮助。非常感谢。

问候, 罗汉

最佳答案

调查 official example code ,你应该这样做:

MyClass::MyClass() {
    QScriptValue self = engine.newFunction(foo, 0);
    ....
}

编辑: 好吧,我仔细查看了引用资料。问题是,您试图在需要函数的地方传递一个方法。作为@mosg指出,这是不可能的。要么将 foo 设为静态函数 - 或者在引用的线程中尝试解决方案。这意味着,您通过 engine.newQObject 创建了一个新的 QObject

关于c++ - 使用带有 QScriptEngine::newFunction 的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935802/

相关文章:

c++ - 在函数中返回 2 个值

c++ - 优化 : Inline or Macrofunction?

python - 按钮的单按钮事件处理程序

c++ - 使用QScriptEngine的问题:必须在QScriptEngine之前构造一个Q(Core)Application

javascript - 仅在通过脚本访问时未定义属性

c++ - 如何通过 GetWindowText 获取不同语言的文本?

c++ - 无法将ESP8266连接到Arduino IDE

qt - QWidget::nativeEvent 在 Qt 5.11 中无法获得正确的消息

c++ - LabVIEW Linux C++开发——初学者问题