使用带有“本机函数”调用的QScriptEngine ... QT示例...失败:“没有用于调用'QScriptEngine :: newFunction'的匹配函数”?

时间:2013-08-08 15:05:17

标签: c++ qt qt-creator

我正在使用Qtcreator提供的示例并收到此错误...... ??

enter image description here

void MainWindow::hBtn
{
    QScriptEngine e;

    QScriptValue fun = e.newFunction(myAdd);  // ERROR: No matching function...
    e.globalObject().setProperty("myAdd", fun);

    QScriptValue result = e.evaluate("myAdd(myNumber, 1)");
}


QScriptValue myAdd(QScriptContext *context, QScriptEngine *engine)
//also tried:  QScriptValue MainWindow::myAdd(QScriptContext *context, QScriptEngine *engine) //fails as well with same ERROR
{
   QScriptValue a = context->argument(0);
   QScriptValue b = context->argument(1);
   return a.toNumber() + b.toNumber();
}

示例:http://harmattan-dev.nokia.com/docs/library/html/qt4/qscriptengine.html

向下滚动到“原生功能”


通过另一个没有解决方案的用户查看:Using a member function with QScriptEngine::newFunction

2 个答案:

答案 0 :(得分:0)

尝试使用int作为第二个参数。 QScriptValueint无关。

编辑:好的,刚刚意识到使用QScriptValue还有另一种可能的组合,但您可能还必须传递int并使fun成为恒定。

希望它有所帮助。

答案 1 :(得分:0)

用作基础:Pass member function pointer in C++

我从标题类中取出了“myAdd”声明......问题解决了。