Got you now. You can mix several components in one qml file but each one refers to a separate qml file in the end.
In the folder /qmf/qml/qb/components you can find all standard pre-defined user interface components which are shared between all apps.
You can simply refer to these in your own app without having to include that component's qml file in your app.
The advantage of using these components is that your app will have the same look as the other Toon apps.
Two exceptions: if you want to use a standard component but want to taylor it to your needs.
In that case you need to copy that qml file from the components folder and put it in your own app under a different name.
An example is the file /qmf/qml/apps/temperaturelogger-1.3.1/AreaGraphMod.qml which is a changed version from the standard AreaGraph.qml component.
Second reason for customizing a standard component is firmware compatibility. Sometimes a newer firmware version contains changed standard components.
This can create an issue in your app developed on a firmware 4.x to be incompatible with firmware 3.x.
To circumvent that you need to include that component in your own app.
Example: /qmf/qml/apps/buienradar-8.2.0/EditTextLabel4421.qml is the standard component EditTextLabel.qml from firmware 4.4.21 but included in the app to make it work on firmware 3.x as well.
Regarding passing arguments: you need to define these as properties. Typically you do this in the root component of your app (typically with id:app).
All child qml components can refer to the properties from their parents, like app.propertyname. By doing it like this each tile and screen component can access and change the same set of properties. When a screen component changes an app.property which is also used as datasource for an element on a Tile, the tile is automatically updated as well.
Hope this answers your question but probably raises many more
