是否可以在QJSEngine (QT5.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由于最后一个错误,导入似乎有一些功能。
发布于 2016-07-01 05:49:59
.import语句不适用于QJSEngine。QJSEngine只是一个简单的解释器,如果您想拥有某种“导入”功能,您可以切换到QQmlEngine,它构建在QJSEngine:http://doc.qt.io/qt-5/qtqml-syntax-imports.html#qml-import-path之上。
使用QJSEngine,您基本上需要手动填充js全局对象(而QtCreator sintax凭据将无法识别跨不同文件使用的语句)。
https://stackoverflow.com/questions/38057170
复制相似问题