动态c++;QJSEngine中的对象 < >我无法理解如何组织QJSngEng/P>中C++对象的动态创建

动态c++;QJSEngine中的对象 < >我无法理解如何组织QJSngEng/P>中C++对象的动态创建,c++,qt,qml,qt5,C++,Qt,Qml,Qt5,我尝试这样做: main.cpp #include <QCoreApplication> #include <QQmlEngine> #include <QObject> #include <QQmlComponent> #include <QtQml> #include <QQmlEngine> #include "js_object.h" Q_DECLARE_METATYPE(Js_Object*) int main

我尝试这样做:

main.cpp

#include <QCoreApplication>
#include <QQmlEngine>
#include <QObject>
#include <QQmlComponent>
#include <QtQml>
#include <QQmlEngine>
#include "js_object.h"

Q_DECLARE_METATYPE(Js_Object*)

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QJSEngine myEngine;
    qmlRegisterType<Js_Object>("Js_Object", 1, 0, "Js_Object");
    QJSValue v=myEngine.evaluate("import Js_Object 1.0;\n var t= new  Js_Object() ;");
    qDebug()<<v.toString();
    return a.exec();
}
我做错了什么

QScript引擎允许这样做,但在QT5.5中QScript引擎已被弃用,
尝试使用QJSEngine

我认为您混合了QML导入语句和ECMAScript代码。AFAIR,import语句不在ECMAScript的标准中,因此不受支持。您可能应该创建包含所需Javascript的QML代码。我只使用了一个工厂函数。也许这对你有帮助?类似这样的内容:
engine.globalObject().setProperty(“_factory”,engine.newQObject(newfactory))
然后在JS:
\u factory.create()
这是我发现的最可预测的路径。在QScript引擎中,我可以执行QScript值ctor=ScriptEngine->newFunction([](QScript上下文*ctx,QScript引擎*engine)->QScript值{ScriptFile*o;o=new ScriptFile(ctx);返回引擎->newQObject(o,QScriptEngine::ScriptOwnership);});QScriptValue metaObject=ScriptEngine->newQMetaObject(&QObject::staticMetaObject,ctor);ScriptEngine->globalObject().setProperty(“文本文件”,元对象);然后在jsvar f=newtextfile(“1.txt”);在QJSEngine中查找模拟
#ifndef JS_OBJECT_H
#define JS_OBJECT_H

#include <QObject>
class Js_Object : public QObject
{
    Q_OBJECT
public:
    explicit Js_Object(QObject *parent = 0) : QObject(parent) {
        qDebug()<<"Js_Object::Js_Object(QObject *parent) : QObject(parent)";
}
};
#endif // JS_OBJECT_H
"SyntaxError: Syntax error"