Duplication of object in C++ and QML
-
Hello, I'm working on an application that has both C++ and QML components. The application has a 'parsing' class that interprets data from another process. This data is sent from the parser to a different, but relevant class for processing, then displayed in the QML frontend. Right now I handle the passing of the data from the parser by having the data as a class member variable, which is further represented as a QML property. From there it is passed to a QML instance of the data processing class. Essentially, I perform my connect() call in QML when it could be done in C++.
This means that my parsing class has member variables of everything that comes in from the other process, as well as that data being a member variable of the relevant class. This essentially duplicates all of my data.
I would like to be able to connect the 'value received' signal from the parser to a slot in the relevant processing class, then have the processing class handle the QML properties of itself. However, I've been having trouble representing an object created in C++ represented in QML. I can create an object of that class in QML, and process that data in C++, but not the other way around.
Is there a way to have the same object be represented simultaneously in C++ and QML?
-
Hi
Do you mean like the sample ?
http://doc.qt.io/qt-5/qtqml-cppintegration-contextproperties.htmlclass ApplicationData : public QObject { Q_OBJECT public: Q_INVOKABLE QDateTime getCurrentDateTime() const { return QDateTime::currentDateTime(); } }; int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQuickView view; ApplicationData data; view.rootContext()->setContextProperty("applicationData", &data); view.setSource(QUrl::fromLocalFile("MyItem.qml")); view.show(); return app.exec(); }
-
Ok, sounds like you already tried the doc stuff ?
https://doc-snapshots.qt.io/qt5-5.9/qtqml-cppintegration-interactqmlfromcpp.html
"Accessing Loaded QML Objects by Object Name"
Like find by name and since its a qobject, cant you just bind the c++ parsers
signal to a property in the object ?
I assume its some more complicated you want and Im afraid its outside my territory :)Lets see what others suggest