PDA

View Full Version : How to get Object's pointer instantiated in QML engine



kofr
18th July 2016, 12:04
I have

qmlRegisterType<DataModel>("one.DataModel", 1, 0, "DataModel");
and I instance this in QML

DataModel {
}
I need to get pointer to the istantiated objct in C++ side. BUT I do not want to use aproach with use of
findChild().
How to get a pointer?

I have

qmlRegisterType<DataModel>("one.DataModel", 1, 0, "DataModel");
and I instance this in QML

DataModel {
}
I need to get pointer to the istantiated objct in C++ side. BUT I do not want to use aproach with use of
findChild().
How to get a pointer?

Added after 30 minutes:

I got the solution
QObject *dataModel = engine.rootObjects()[0]->property("refToMainModelForC").value<QObject*>();
qDebug() << dataModel << "is address of data model";

in QML


property var refToMainModelForC: treeModel
DataModel {
id: treeModel
property var viewCurrentIndex: null
}

anda_skoa
18th July 2016, 13:38
Or the model could register itself inside its C++ code.
Or you call a register function in QML when you want to register a particular model.

Both obviously a lot cleaner than making the C++ code depend in a specific property name on a specific object.

And as always when "the need" to access a QML instantiated object arises: what do you need this for?

Cheers,
_