The new doesn't allow you to set the parent of your new object, you cannot 
assign initial property (they are not exactly the same as setting value after). 
You cannot set binding upon creation of the object, you don't have previously 
declared context/import like the Component into which binding may already 
exist. There is a lot missing if you do a simple new(). Good for Qt Script, but 
Qt script was not doing the binding like Qml can.  Qml Script have a 
declarative part not only a procedural script, that part need to be known when 
you create the object too.

Side note:
obj.setEnabled( true );
obj.isEnabled()
are not very Qml way, they are Q_INVOKABLE method, would be better to expose a 
property that perform the set/get/changed
obj.enabled = true;
if(obj.enabled)
would be more Qml and reduce the clutter and leave the control on which 
function to use in C++ and can also perform a binding instead of value with the 
changed part.

-----Original Message-----
From: Richard Weickelt <rich...@weickelt.de> 
Sent: April 16, 2019 7:39 AM
To: Jérôme Godbout <godbo...@amotus.ca>; interest@qt-project.org
Subject: Re: [Interest] Creating C++ objects in JavaScript with operator new

> You can also generate an object from Qml code directly: 
> Qt.createQmlObject()

I know, but I wanted to use operator new in order to achieve a better look & 
feel. Please note that this is/was easily possible in Qt Script. See the code 
snippets at 
https://doc.qt.io/qt-5/qtscript-index.html#making-c-class-properties-available-in-qt-script

    var obj = new MyObject;
    obj.setEnabled( true );
    print( "obj is enabled: " + obj.isEnabled() );

> The new is lacking too much information to create the QObject properly.

What do you mean and why is that?
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to