C++ programmers would probably be used to lower level kind of technologies, but when talking about this I think it just helps to think about what would you do if you wanted to embed an HTML and JS file into your program and wanted it to work like QML works.
For an experienced C++ dev, a list of stuff will naturally start flowing through their mind:
* A mechanism to inject the files into the binary upon compilation.
* How to interpret the HTML and paint on the screen? We'll need an HTML rendering engine and a surface painter.
* About JS, how to run it? Well, maybe time to include V8 into the program. It will take care of running JS code.
* Now to make calls between both languages. Probably V8 already provides callbacks because it implements FFI already for you.
* And other stuff you mentioned, like a property manager that remembers what has been registered and creates change observers in order to trigger events for C++ to know.
Thing is, Qt already gives you all of this done, otherwise their proposal of QML wouldn't have gone too far...
These series of articles touch on the topic and can enlighten a bit about some details:
* https://www.kdab.com/qml-engine-internals-part-1-qml-file-lo...
* https://www.kdab.com/qml-engine-internals-part-2-bindings/
* https://www.kdab.com/qml-engine-internals-part-3-binding-typ...
* https://www.kdab.com/qml-engine-internals-part-4-custom-pars...