Javascript 在传递到QScriptEngine.evaluate()的脚本中使用Qt.Include()
我想在程序中使用QScript引擎来运行一组与我们的项目相关联的自定义脚本文件。我们的脚本需要包含其他脚本,我正在研究如何使用Qt.include()实现这一点。我在下面设置了一个示例程序,看看这是否可行,但我收到一个错误,说它找不到变量Qt 除了在将内容发送到Javascript 在传递到QScriptEngine.evaluate()的脚本中使用Qt.Include(),javascript,c++,qt,Javascript,C++,Qt,我想在程序中使用QScript引擎来运行一组与我们的项目相关联的自定义脚本文件。我们的脚本需要包含其他脚本,我正在研究如何使用Qt.include()实现这一点。我在下面设置了一个示例程序,看看这是否可行,但我收到一个错误,说它找不到变量Qt 除了在将内容发送到引擎.evaluate()之前创建自己的预处理器之外,还有什么方法可以做到这一点 My main.cpp: #include <QApplication> #include <QFile> #include <
引擎.evaluate()
之前创建自己的预处理器之外,还有什么方法可以做到这一点
My main.cpp:
#include <QApplication>
#include <QFile>
#include <QMessageBox>
#include <QTextStream>
#include <QtScript>
int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(helloscript);
QApplication app(argc, argv);
QScriptEngine engine;
QString fileName(":/hello.js");
QFile scriptFile(fileName);
scriptFile.open(QIODevice::ReadOnly);
QTextStream stream(&scriptFile);
QString contents = stream.readAll();
scriptFile.close();
QScriptValue result = engine.evaluate(contents, fileName);
if (result.isError()) {
QMessageBox::critical(0, "Hello Script",
QString::fromLatin1("%0:%1: %2")
.arg(fileName)
.arg(result.property("lineNumber").toInt32())
.arg(result.toString()));
return -1;
}
return app.exec();
}
My other.js:
function func() {
console.log("Hello");
}
错误:
:/hello.js:1: ReferenceError: Can't find variable: Qt
什么是Qt.Include()?它不是
QScriptEngine
API的一部分。在QML中可以调用Qt.include()。这里有一个例子:对于QtScript
,您必须使用QScriptEngine::newFunction()
实现自己的include()
。
:/hello.js:1: ReferenceError: Can't find variable: Qt