Hello and welcome to devnet,
your GUI seems quite sexy so far. I will try to provide you an answer to all the points you mentioned:
be able to recursively encapsulate elements
Should be possible, you can get a qml object or context from c++
be able to move them in a scene,
Yes, you can move elements withhin your application.(Drag and drop-like or by a setting a xyz-position)
send signals when they are left- or right- clicked
A QML component emits signals when events are triggered(for example: A MouseArea emits clicked when you clicked). Also it is possible to define your own signals easily and catch them. (signal mySignal; onMySignal: doStuff; )
have them draggable and droppable
Not from scratch, it would take a little time to implement a drag and drop, you probably could do this fully in qml, it would take more time to implement a grid based drag and drop.
be able to manage elements not known at compile-time (there is a plugin system where you can add your own Process)
You can dynamically create QML components or load full QML files on run-time!
TL;DR It should theoretically work, just give QML a try, work a little bit with it and test it out, if you like it you can try to switch your project to a QML project.
One last thing; there was a QtQuick "Bug" a few months ago (haven't worked with QML since then), where your application won't wake up after closing(not quiting) it under android, maybe it's fixed yet, i don't know.
If you still have questions then feel free to ask! =)