Doc: Improve Repeater3D component documentation

- Added task topics
- Reorganized content a little bit to separate task
and concept content
- Minor changes to language to better fit target audience

Task-number: QDS-6910
Change-Id: Iaa3a3d85d5a647704033079444b303de13abeb55
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
This commit is contained in:
Mats Honkamaa
2022-05-16 08:16:18 +03:00
parent 1d6363d84d
commit 2e8bfee966
8 changed files with 156 additions and 16 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -36,20 +36,16 @@
feature in \QDS 2.2, and its functionality will be improved in future feature in \QDS 2.2, and its functionality will be improved in future
releases. releases.
The \uicontrol Repeater3D component is used to create a large number of The \uicontrol Repeater3D component is used to create multiple
similar items. Like other view types, \uicontrol Repeater3D needs a model similar items. Like other view types, \uicontrol Repeater3D needs a model
and a delegate. For each entry in the model, the delegate is instantiated in and a delegate. The delegate sets the item to use and the model sets the
a context seeded with data from the model. structure of the items in the \uicontrol Repeater3D component.
The model can be any of the supported \l{Lists and Other Data Models} The model can be any of the supported \l{Qt QML Models QML Types}
{data models}. Additionally, like delegates for other views, a delegate for {data models}. Additionally, like delegates for other views, a delegate for
the \uicontrol Repeater3D can access its index within the repeater, as well the \uicontrol Repeater3D can access its index within the repeater, as well
as the model data relevant to the delegate. as the model data relevant to the delegate.
Add a \uicontrol Repeater3D component to your scene by drag-and-dropping it
from \uicontrol Components > \uicontrol {Qt Quick 3D} >
\uicontrol {Qt Quick 3D} to \uicontrol Scene in \uicontrol Navigator.
\note \uicontrol Repeater3D owns all items it instantiates. Removing or \note \uicontrol Repeater3D owns all items it instantiates. Removing or
dynamically destroying an item created by \uicontrol Repeater3D results in dynamically destroying an item created by \uicontrol Repeater3D results in
unpredictable behavior. unpredictable behavior.
@@ -60,15 +56,15 @@
For more information, see \l{https://doc.qt.io/qt/qml-qtquick3d-repeater3d.html} For more information, see \l{https://doc.qt.io/qt/qml-qtquick3d-repeater3d.html}
{Repeater3D} in the \uicontrol {Qt Quick 3D} documentation. {Repeater3D} in the \uicontrol {Qt Quick 3D} documentation.
\section1 Repeater3D Properties \section2 Repeater3D Properties
To define a model providing data for the repeater, select it in \l Navigator, \section3 Model
and then in \uicontrol Properties > \uicontrol Repeater, specify the
\uicontrol Model property. Currently, you can only use the \uicontrol Model The \uicontrol Model property specifies the model providing data for the
property in the \uicontrol Properties view to set a numeric model or to bind repeater. You can only use the \uicontrol Model property in the
to QML based models. You can use the \l {Working in Edit Mode}{Edit} mode or \uicontrol Properties view to set a numeric model or to bind to QML based
\l {Text Editor} to define any of the supported data models as the value of models. You can use \l {Text Editor} to define any of the supported
the \uicontrol Model property: data models as the value of the \uicontrol Model property:
\list \list
\li A number that indicates the number of delegates to be created by \li A number that indicates the number of delegates to be created by
the repeater. the repeater.
@@ -80,6 +76,8 @@
The type of model affects the properties that are exposed to the delegate. The type of model affects the properties that are exposed to the delegate.
\section3 Delegate
The \uicontrol Delegate property specifies a template defining each object The \uicontrol Delegate property specifies a template defining each object
instantiated by the repeater. Currently, the \uicontrol Delegate property instantiated by the repeater. Currently, the \uicontrol Delegate property
needs to be defined in code using the \uicontrol Edit mode or needs to be defined in code using the \uicontrol Edit mode or
@@ -92,4 +90,146 @@
all model roles as named properties, in the same way that delegates do for all model roles as named properties, in the same way that delegates do for
view classes like \uicontrol ListView. view classes like \uicontrol ListView.
\section1 Adding a Repeater3D Component with a Numeric Model
This section explains how to add a \uicontrol Repeater3D component with
a numeric model to your \QDS project.
To add a \uicontrol Repeater3D component:
\list 1
\li Drag a \uicontrol Repeater3D component from \uicontrol Components to
\e scene in \uicontrol Navigator.
\li Select \e repeater3D in \uicontrol Navigator and in
\uicontrol Properties, set \uicontrol Model to 4.
\image repeater3d-model-property.png
\endlist
Now, you have set up the \uicontrol Repeater3D component to use a numeric
model that draws four instances of the same item. Next, you need to add the
item to draw. In this example we are using a \uicontrol Cube.
\list 1
\li From \uicontrol Components, drag a \uicontrol Cube to \e repeater3D in
\uicontrol Navigator.
Now, four cubes are drawn to the scene, but they are drawn to the exact same
place.
\li Select \e cube in \uicontrol Navigator and in \uicontrol Properties
select \inlineimage icons/action-icon.png
next to \uicontrol Translation > \uicontrol X.
\li Select \uicontrol {Set binding} to open \uicontrol {Binding Editor}.
\li In the binding editor, enter \c{index * 150}. This sets the X
location to increase by 150 for each of the cube instances.
\image repeater3d-index-binding.png
\li Select \uicontrol OK and go to \uicontrol {3D Editor} to see the
result.
\endlist
\image repeater3d-numeric-model.webp
\section1 Adding a Repeater3D Component with a List Model
This section explains how to add a \uicontrol Repeater3D component with
a ListModel to your \QDS project:
To add a \uicontrol Repeater3D component:
\list 1
\li Drag a \uicontrol Repeater3D component from \uicontrol Components to
\e scene in \uicontrol Navigator.
\li You need to enter the QML code for the \uicontrol ListModel manually.
Go to \uicontrol {Text Editor} and enter the following code somewhere
inside the root object:
\code qml
ListModel {
id: planetModel
ListElement {
name: "Mars"
radius: 3.39
}
ListElement {
name: "Earth"
radius: 6.37
}
ListElement {
name: "Venus"
radius: 6.05
}
}
\endcode
The default root object for a \QDS project is \uicontrol Rectangle, so
you can paste the \uicontrol ListModel code, for example, like this:
\code qml
Rectangle {
width: Constants.width
height: Constants.height
color: Constants.backgroundColor
ListModel {
id: planetModel
ListElement {
name: "Mars"
radius: 3.39
}
ListElement {
name: "Earth"
radius: 6.37
}
ListElement {
name: "Venus"
radius: 6.05
}
}
View3D {
id: view3D
anchors.fill: parent
...
\endcode
\li In \uicontrol {Text Editor}, add \c {model: planetModel} to the
\uicontrol Repeater3D object to tell that you want to use your
\uicontrol ListModel as the model for the \uicontrol Repeater3D object.
\code qml
Repeater3D {
id: repeater3D
model: planetModel
}
\endcode
\endlist
Now, you have set up the \uicontrol Repeater3D component to use a
\uicontrol ListModel to draw the items. Next, you need to add the
item to draw. In this example we are using a \uicontrol Sphere.
\list 1
\li From \uicontrol Components, drag a \uicontrol Sphere to \e repeater3D
in \uicontrol Navigator.
\image repeater3d-listmodel-navigator.png
\li Select \e sphere in \uicontrol Navigator and select
\inlineimage icons/action-icon.png
next to \uicontrol Scale > \uicontrol X.
\li Select \uicontrol {Set binding} to open \uicontrol {Binding Editor}.
\li In the binding editor, enter \c{radius}. This sets the X
scale to the radius value defined in the ListModel for each of the sphere
instances.
\image repeater3d-radius-binding.png
\li Select \uicontrol OK.
\li Repeat steps 2 to 5 for \uicontrol Scale > \uicontrol Y and
\uicontrol Scale > \uicontrol Z.
\endlist
Now, three spheres of different size are drawn but they are drawn in the same
position so you need to change the position to see all spheres.
\list 1
\li Select \e sphere in \uicontrol Navigator and select
\inlineimage icons/action-icon.png
next to \uicontrol Translation > \uicontrol X.
\li Select \uicontrol {Set binding} to open \uicontrol {Binding Editor}.
\li In the binding editor, enter \c{index * 1000}. This sets the X
location to increase by 1000 for each of the sphere instances.
\image repeater3d-location-binding.png
\li Select \uicontrol OK and go to \uicontrol {3D Editor} to see the
result. You need to zoom out to see all the spheres.
\endlist
\image repeater3d-list-model.webp
*/ */