Hi Sze Howe,
On Tue, Sep 30, 2014 at 7:32 PM, Sze Howe Koh <szehowe....@gmail.com> wrote: > Hi, > > On 1 October 2014 09:05, Oleg Shparber <troll...@gmail.com> wrote: > > Hi, > > > > I am working on a QML plugin which should provide a set of "modules" with > > functionality similar to some of built-in Node.js modules. The > requirement > > also is that third-party JS libraries created for Node.js should also > work > > out of the box. While much of the work is straightforward, there are > still > > some questions I cannot find solutions for. > > > > 1. For some reason when I am setting a property on > QJSEngine::globalObject() > > in my plugin it does not become available in QML. Example: > > > > static QObject *singletontype_provider(QQmlEngine *engine, QJSEngine > > *scriptEngine) > > { > > engine->globalObject().setProperty("prop1", "aaa"); > > scriptEngine->globalObject().setProperty("prop2", "aaa"); > > ... > > } > > > > I've tried with both QJSEngine and QQmlEngine passed to the plugin, but > > neither works. > > > > > > 2. Can I set new properties of the global object in JS/QML? Trying to set > > (1+2) That's not possible with the QML JavaScript engine. According to > "JavaScript Environment Restrictions" in > http://qt-project.org/doc/qt-5/qtqml-javascript-hostenvironment.html: > > "In QML, the global object is constant - existing properties cannot be > modified or deleted, and no new properties may be created." > > Thanks, I missed that somehow. > Side note: The JavaScript engine implemented in Qt is designed > specifically for QML code in mind. That's one of the main reasons for > dropping V8 in favour of a custom JavaScript engine. > > I don't know the answer to your other questions, so I'll let others answer > them. > > > > 3. How can I make my C++ type creatable with "new" in QML/JS? I want to > > provide several new JS types, but not QML types. > > > > > > 4. Is there a way to provide my own container type? Overloading [] with > > Q_INVOKABLE does not work. I'd like to have a custom buffer type which I > can > > use as myBuffer[index]. > > (4) How does that differ from a regular JavaScript array? > > I need to create a type to store binary data. Something like http://nodejs.org/api/buffer.html. So, JS Array is not an option. > > 5. Is QJSEngine::evaluate() the only method to execute a separate JS > file? > > > > 6. Can I somehow create a new callable QJSValue using QMetaMethod or > lambda > > function? It's possible to do from JS side (e. g. > > NewType.prototype.newMethod = CppObject.method; works), but I want to do > it > > from C++ side. > > (6) May I ask why you want to do it from the C++ side? > I want to extend prototypes of JS Objects with C++ methods which are not visible from QML/JS. > > > Regards, > Sze-Howe > Best, Oleg
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest