Qt QJSEngine导入js文件

时间:2016-06-27 14:55:37

标签: javascript qt import qjsengine

是否可以在QJSEngine(QT 5.6)中导入javascript文件?

示例1:

plainTextEdit中的文本:

.import "./jsimport.js" as Test
var x = Test.y;
console.log(x);

C ++:

void MainWindow::on_pushButton_clicked()
{
    QJSEngine engine;
    engine.installExtensions(QJSEngine::AllExtensions);

    QJSValue result = engine.evaluate(ui->plainTextEdit->toPlainText());
    qDebug() << "isError:" << result.isError();
    qDebug() << "resultString:" << result.toString();
    if(result.hasProperty("lineNumber"))
        qDebug() << "property lineNumber:" << result.property("lineNumber").toInt();
}
jsimport.js文件中的

文本:

var y = 42;

结果:

isError: true
resultString: "ReferenceError: Test is not defined"
property lineNumber: 2

示例2:

PlainTextEdit中的文本:

.import "./jsimport.js"

相同的c ++代码

结果:

isError: true
resultString: "SyntaxError: File import requires a qualifier"
property lineNumber: 1

由于上一个错误,似乎导入了一些功能。

1 个答案:

答案 0 :(得分:0)

.import语句不适用于QJSEngine。 QJSEngine只是一个简单的解释器,如果你想要一些“导入”功能,你可以切换到QQmlEngine,它建立在QJSEngine之上: http://doc.qt.io/qt-5/qtqml-syntax-imports.html#qml-import-path

使用QJSEngine,您基本上需要手动填充js全局对象(并且QtCreator sintax检查程序将无法识别您在不同文件中使用的语句)。