Написал небольшой тестовый пример с использованием qscript
C++ (Qt)
#include <QtCore>
#include <QtGui>
#include <QtScript>
class Test : public QObject
{
Q_OBJECT
public slots:
void test()
{
#ifdef ERROR
qDebug() << "test1";
QString sFunction = QString("a+b");
QString sScript = QString("function(a,b){return %1;}").arg(sFunction);
#else
qDebug() << "test2";
QString sScript = QString("function(a,b) { return a+b; }");
#endif
QScriptEngine scriptEngine;
QScriptValue svFun = scriptEngine.evaluate(sScript);
if (scriptEngine.hasUncaughtException()) {
qDebug() << QString("Script error: %1").arg(sScript);
qDebug() << svFun.toString();
} else {
qDebug() << QString("Script Ok!: %1").arg(sScript);
}
QScriptValueList args;
args << 1 << 2;
QScriptValue res = svFun.call(QScriptValue(), args);
qDebug() << res.toInt32();
}
};
#include "main.moc"
int main (int argc, char ** argv)
{
QApplication app(argc, argv);
QPushButton * button = new QPushButton("evaluate");
Test * test = new Test();
QObject::connect(button, SIGNAL(clicked()), test, SLOT(test()));
button->resize(100, 30);
button->show();
return app.exec();
}
Этот пример прекрасно работает с версией qt4.5.3
Этот же пример скомпилированный с qt 4.6.0 (qtsdk-2009.05)не работает
"Script error: function(a,b) { return a+b; }"
"SyntaxError: Parse error"
В чем может быть проблема?