Most of the context would be injected into the QML runtime from C++ via
calls to `setContextProperty()`, as well as by defining additional QML
modules from C++ (via `qmlRegister...()`).
This is where your architecture fails. By using setContextProperty() and
procedurally registering types, you
a, still make your types depend on the context (due to context
properties). You still won't be able to use them in standalone tools.
b, prevent QML tooling such as qmllint, qmlcachegen, qmlls to do
anything useful with your QML code since they cannot see through your
procedural type registrations or your context properties.
Instead of this:
1. Use singletons or object properties instead of context properties.
There are also initial properties you can pass to QQmlComponent and
QQmlApplicationEngine if that helps.
2. Use QML_ELEMENT and friends as well as qt_add_qml_module in CMake to
define your types declaratively so that tooling can see them.
This way you obtain truly re-usable QML modules you can test in
isolation. You also won't need to implement your own plugins or fight
with the linker since qmltyperegistrar will generate the registration
code and the hacky symbol references for you. This is the whole point of
qt_add_qml_module. If you don't want qmltyperegistrar to do its work,
there is little point in using qt_add_qml_module at all.
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest