summaryrefslogtreecommitdiffstats
path: root/examples/qmlsurfacelayers/doc/src/qmlsurfacelayers.qdoc
blob: eab9f17fac671ae1fb7ce71868c3049d2112c0ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the QtDataVisualization module.
**
** Licensees holding valid Qt Enterprise licenses may use this file in
** accordance with the Qt Enterprise License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
**
****************************************************************************/

/*!
    \example qmlsurfacelayers
    \title Qt Quick 2 Surface Multiseries Example
    \ingroup qtdatavisualization_examples
    \brief Using multiple series with Surface3D in a QML application.

    The Qt Quick 2 surface example shows how to make a 3D surface plot displaying 3 layers using
    Surface3D with Qt Quick 2.

    \image qmlsurfacelayers-example.png

    The focus in this example is on generating a multiseries surface plot from 3 different height
    map images, so in this section we skip explaining the application creation. For a more detailed
    QML example documentation, see \l{Qt Quick 2 Scatter Example}.

    \section1 Adding data to the graph

    This example shows how to add several surface series to one graph using using
    HeightMapSurfaceDataProxies and how to control their visibilities individually.

    Let's start by creating a specific gradient for each layer:

    \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 0

    Then we'll create the series themselves. It happens simply by adding 3 separate Surface3DSeries
    to the Surface3D graph as children:

    \dots 0
    \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 1
    \dots 0

    You'll notice we added the created gradients to the \c baseGradient properties of the series.
    We could have added them to the \c baseGradients property of the Theme3D in Surface3D instead,
    but doing it this way ensures each gradient is applied to a correct series:

    \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 2
    \dots

    \section1 Controlling the graph

    Let's add some checkboxes to control the visibility of layers:

    \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 3

    We don't need to do anything on the \c onCheckedChanged as we bound the \c checked state to
    the \c visible property of the series directly:

    \dots 0
    \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 4
    \dots 0

    Let's add some more checkboxes to control how the layers are displayed, when visible:

    \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 5

    In addition to these we have two buttons, one of which is of special interest to us. It is used
    to control whether we want to slice into only one layer, or all of them:

    \snippet ../examples/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 6

    \section1 Example contents
*/