Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在传递到QScriptEngine.evaluate()的脚本中使用Qt.Include()_Javascript_C++_Qt - Fatal编程技术网

Javascript 在传递到QScriptEngine.evaluate()的脚本中使用Qt.Include()

Javascript 在传递到QScriptEngine.evaluate()的脚本中使用Qt.Include(),javascript,c++,qt,Javascript,C++,Qt,我想在程序中使用QScript引擎来运行一组与我们的项目相关联的自定义脚本文件。我们的脚本需要包含其他脚本,我正在研究如何使用Qt.include()实现这一点。我在下面设置了一个示例程序,看看这是否可行,但我收到一个错误,说它找不到变量Qt 除了在将内容发送到引擎.evaluate()之前创建自己的预处理器之外,还有什么方法可以做到这一点 My main.cpp: #include <QApplication> #include <QFile> #include <

我想在程序中使用QScript引擎来运行一组与我们的项目相关联的自定义脚本文件。我们的脚本需要包含其他脚本,我正在研究如何使用Qt.include()实现这一点。我在下面设置了一个示例程序,看看这是否可行,但我收到一个错误,说它找不到变量Qt

除了在将内容发送到
引擎.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