Hi, is there an easy way to register a QObject-derived class in the QML type system so that I can instantiate it from within JavaScript code using operator new?
function someJavaScriptFunction(){ var myObject = new MyClass("blabla"); // ... } Right now I am registering another class as a proxy which then registers the constructor function for my class. This looks overly verbose and clunky. Is there a simpler way? class MyClass : public QObject { Q_OBJECT public: MyClass(QObject* parent = nullptr, const QString& someParam = ""); Q_INVOKABLE bool someMethod() const; static void registerAsJSType(QJSEngine* engine); }; class MyClassCreator : public QObject { Q_OBJECT public: Q_INVOKABLE MyClass* createObject(const QVariantMap& arguments); }; void MyClass::registerAsJSType(QJSEngine* engine) { QJSValue creator = engine->newQObject(new MyClassCreator()); engine->globalObject().setProperty("_MyClassCreator", creator); engine->evaluate("function MyClass(param) { return _MyClassCreator.createObject({ someParam: param }); }"); } MyClass* MyClassCreator::createObject(const QVariantMap& arguments) { QString someParam = arguments.value("someParam").toString(); return new MyClass(qmlEngine(this), someParam); } Thanks Richard _______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest