As posted elsewhere in this story the Qt APIs promote a certain design that make your application and your code easier to maintain and read.
So to answer your point 1;
- || parent-child relationships are not enough in many cases where objects are shared across multiple domains.
The parent-child relationship is there for memory management purposes. Which directly links to having an owner of an object. If your object is owned by someone else, that someone is responsible for deleting it. This is free in Qt when you use QObject.
If your object is not owned by one thing but shared between many you use a QSharedData based concept which immediately makes you stop using pointers too.
This makes it absolutely clear what is what in common usage of the code and you'll notice that memory leaks or crashes due to dangling pointers become very easy to avoid.
So, you may be right Qt is not as flexible as STL. But I don't mind a bit of structure. Less rope to hang myself.
Another point that probably needs clarification;
- || Introspection has nothing to do with signals and slots
I think it does, you can't have powerful signals/slots without introspection. The huge advantage of using introspection to do connections is that you don't need a pre-compiled interface to code to. Which then avoids a lot of nastyness in C++ with library loading and linking etc.
Which makes it possible to have a GUI designer as powerful as QtDesigner, among others.