weird. it would be nice to see whole code snippet if possible
On 10/7/18 11:18 PM, Jean-Michaël Celerier wrote:
It also works if I remove Q_OBJECT from my C++ type:
namespace lib {
class MyObject : public QObject { };
}
qmlRegisterType<lib::MyObject>("MyLib", 1, 0, "MyObject");
works as expected, but if I add Q_OBJECT in
class MyObject : public QObject { };
then it does not work anymore
-------
Jean-Michaël Celerier
http://www.jcelerier.name
On Sun, Oct 7, 2018 at 11:07 PM Jean-Michaël Celerier
<jeanmichael.celer...@gmail.com
<mailto:jeanmichael.celer...@gmail.com>> wrote:
> well, the problem is that createTree() does not registered in
your QObject-derived class.
but why does it work in the following case then ?
QtObject {
function createTree() { }
}
-------
Jean-Michaël Celerier
http://www.jcelerier.name
On Sun, Oct 7, 2018 at 1:00 PM Vlad Stelmahovsky
<vladstelmahov...@gmail.com <mailto:vladstelmahov...@gmail.com>>
wrote:
well, the problem is that createTree() does not registered in
your QObject-derived class. its a part of instantiated object
ant metasystem have no clue about it
I think you need to register it 1st in header somehow
On 10/7/18 12:41 PM, Jean-Michaël Celerier wrote:
Yes, that's what I'm doing, but I 'm typing the code in the
mail - sorry for the typo.
Here's something even more fundamental : the following prints
all the functions if my type is a QtObject descendant, but it
does not if my type is a MyLib.MyObject descendant
for(int i = 0; i < obj->metaObject()->methodCount(); i++) {
qDebug() << obj->metaObject()->method(i).name();
}
-------
Jean-Michaël Celerier
http://www.jcelerier.name
On Sun, Oct 7, 2018 at 12:39 PM Vlad Stelmahovsky
<vladstelmahov...@gmail.com
<mailto:vladstelmahov...@gmail.com>> wrote:
QMetaMethod::invokeMethod(obj, "createTree");
On 10/7/18 12:34 PM, Jean-Michaël Celerier wrote:
Hello,
I have the following code :
Foo.qml :
MyLib.MyObject {
function createTree() { /* stuff */ }
property string host: "ws://whatever.com
<http://whatever.com>"
}
cpp :
namespace lib {
class MyObject : public QObject { Q_OBJECT };
}
...
QQmlComponent c(engine);
c.setData("content of Foo.qml", QUrl());
auto obj = c.createObject();
QString host = QQmlProperty(obj, "host").read();
QMetaMethod::invokeMethod("createTree");
Reading the "host" property works fine so the QML object
is correctly instantiated. But the invokeMethod call
gives me a warning :
QMetaObject::invokeMethod: No such method
'lib::MyObject::createTree()'
The weird thing being: it works fine if I replace
MyLib.MyObject with QtObject on the QML side.
Of course I want to use some additional methods present
in MyObject so this is not a solution.
Anyone knows what is going on here ?
Thanks,
Jean-Michaël Celerier
-------
Jean-Michaël Celerier
http://www.jcelerier.name
_______________________________________________
Interest mailing list
Interest@qt-project.org <mailto:Interest@qt-project.org>
http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org <mailto:Interest@qt-project.org>
http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest