Hello, I'm trying to learn Qt basics by making small app. I'm interested in simple CRUD Qml quick forms app, but I stumble a lot on little things. I read a lot of documentation (I assume some would argue that lot is a relative term) but I can't figure it out. It would be a lot easier to learn if there would be some complete app and learn by reading it because examples provided with Qt just show what you can do but not what you should do (this part for beginner is crucial, at least this is my opinion). I have several questions considering Qml because I'm stuck there at the moment, I understand that there are multiple answers to them but I'll try to narrow them by decisions of what I would like make. After reading a A Multilayered Architecture for Qt Quick I would like to make multilayer Qt Quick app as the article describes using Qml signals to pass data to c++ backend thinking that there shouldn't be heavy data transfer and for start it's feel natural to me. Ok, the questions:

1. Should I use these lines of code whenever I want to instantiate some window (subform):
Qt Code:
  1. QQmlApplicationEngine engine(QUrl("qrc:/qml/main.qml"));
  2. QObject *topLevel = engine.rootObjects().value(0);
  3. QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
To copy to clipboard, switch view to plain text mode 
or I should import all forms in my mainwindow.qml file and activate them with for example, MenuItem onTriggered: myForm.show()

2. Should I use ApplicationWindow for all my windows

3. My intention is to pass data between qml and c++ in form of json objects which I can later on transfer further without conversion, but I didn't found a way how to do this except here but it lacks implementation and in Qt documentation where I understand how to transfer it with QVariant but casting it would be sure nice to see (I'm really tired of guessing).

Disclaimer: I'm total n00b so please show some mercy .

P.s. Is it acceptable to post some further questions in this thread or to copy introduction and start another one?