main.qml Example File | Qt Data Visualization 5.9

Qt 5.9 | Qt Data Visualization | Qt Quick 2 Scatter Example | main.qml Example File

Qt 5.9.2 Reference Documentation

# main.qml Example File

qmlscatter/qml/qmlscatter/main.qml

      /****************************************************************************
      **
      ** Copyright (C) 2016 The Qt Company Ltd.
      ** Contact: https://www.qt.io/licensing/
      **
      ** This file is part of the Qt Data Visualization module of the Qt Toolkit.
      **
      ** $QT_BEGIN_LICENSE:GPL$
      ** Commercial License Usage
      ** Licensees holding valid commercial Qt licenses may use this file in
      ** accordance with the commercial license agreement provided with the
      ** Software or, alternatively, in accordance with the terms contained in
      ** a written agreement between you and The Qt Company. For licensing terms
      ** and conditions see https://www.qt.io/terms-conditions. For further
      ** information use the contact form at https://www.qt.io/contact-us.
      **
      ** GNU General Public License Usage
      ** Alternatively, this file may be used under the terms of the GNU
      ** General Public License version 3 or (at your option) any later version
      ** approved by the KDE Free Qt Foundation. The licenses are as published by
      ** the Free Software Foundation and appearing in the file LICENSE.GPL3
      ** included in the packaging of this file. Please review the following
      ** information to ensure the GNU General Public License requirements will
      ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
      **
      ** $QT_END_LICENSE$
      **
      ****************************************************************************/

      import QtQuick 2.1
      import QtQuick.Layouts 1.0
      import QtDataVisualization 1.0
      import "."

      Rectangle {
          id: mainView
          width: 500
          height: 500

          Data {
              id: seriesData
          }

          Theme3D {
              id: themeIsabelle
              type: Theme3D.ThemeIsabelle
              font.family: "Lucida Handwriting"
              font.pointSize: 40
          }

          Theme3D {
              id: themeArmyBlue
              type: Theme3D.ThemeArmyBlue
          }

          Item {
              id: dataView
              anchors.bottom: parent.bottom
              width: parent.width
              height: parent.height - buttonLayout.height

              Scatter3D {
                  id: scatterGraph
                  width: dataView.width
                  height: dataView.height
                  theme: themeIsabelle
                  shadowQuality: AbstractGraph3D.ShadowQualitySoftLow
                  axisX.segmentCount: 3
                  axisX.subSegmentCount: 2
                  axisX.labelFormat: "%.2f"
                  axisZ.segmentCount: 2
                  axisZ.subSegmentCount: 2
                  axisZ.labelFormat: "%.2f"
                  axisY.segmentCount: 2
                  axisY.subSegmentCount: 2
                  axisY.labelFormat: "%.2f"
                  Scatter3DSeries {
                      id: scatterSeries
                      itemLabelFormat: "Series 1: X:@xLabel Y:@yLabel Z:@zLabel"

                      ItemModelScatterDataProxy {
                          itemModel: seriesData.model
                          xPosRole: "xPos"
                          yPosRole: "yPos"
                          zPosRole: "zPos"
                      }
                  }

                  Scatter3DSeries {
                      id: scatterSeriesTwo
                      itemLabelFormat: "Series 2: X:@xLabel Y:@yLabel Z:@zLabel"
                      itemSize: 0.1
                      mesh: Abstract3DSeries.MeshCube

                      ItemModelScatterDataProxy {
                          itemModel: seriesData.modelTwo
                          xPosRole: "xPos"
                          yPosRole: "yPos"
                          zPosRole: "zPos"
                      }
                  }
                  Scatter3DSeries {
                      id: scatterSeriesThree
                      itemLabelFormat: "Series 3: X:@xLabel Y:@yLabel Z:@zLabel"
                      itemSize: 0.2
                      mesh: Abstract3DSeries.MeshMinimal

                      ItemModelScatterDataProxy {
                          itemModel: seriesData.modelThree
                          xPosRole: "xPos"
                          yPosRole: "yPos"
                          zPosRole: "zPos"
                      }
                  }
              }
          }

          RowLayout {
              id: buttonLayout
              Layout.minimumHeight: cameraToggle.height
              width: parent.width
              anchors.left: parent.left
              spacing: 0
              NewButton {
                  id: shadowToggle
                  Layout.fillHeight: true
                  Layout.fillWidth: true
                  text: scatterGraph.shadowsSupported ? "Hide Shadows" : "Shadows not supported"
                  enabled: scatterGraph.shadowsSupported
                  onClicked: {
                      if (scatterGraph.shadowQuality === AbstractGraph3D.ShadowQualityNone) {
                          scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualitySoftLow;
                          text = "Hide Shadows";
                      } else {
                          scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualityNone;
                          text = "Show Shadows";
                      }
                  }
              }

              NewButton {
                  id: smoothToggle
                  Layout.fillHeight: true
                  Layout.fillWidth: true
                  text: "Use Smooth for Series One"
                  onClicked: {
                      if (scatterSeries.meshSmooth === false) {
                          text = "Use Flat for Series One";
                          scatterSeries.meshSmooth = true;
                      } else {
                          text = "Use Smooth for Series One"
                          scatterSeries.meshSmooth = false;
                      }
                  }
              }

              NewButton {
                  id: cameraToggle
                  Layout.fillHeight: true
                  Layout.fillWidth: true
                  text: "Change Camera Placement"
                  onClicked: {
                      if (scatterGraph.scene.activeCamera.cameraPreset === Camera3D.CameraPresetFront) {
                          scatterGraph.scene.activeCamera.cameraPreset =
                                  Camera3D.CameraPresetIsometricRightHigh;
                      } else {
                          scatterGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetFront;
                      }
                  }
              }

              NewButton {
                  id: themeToggle
                  Layout.fillHeight: true
                  Layout.fillWidth: true
                  text: "Change Theme"
                  onClicked: {
                      if (scatterGraph.theme.type === Theme3D.ThemeArmyBlue) {
                          scatterGraph.theme = themeIsabelle
                      } else {
                          scatterGraph.theme = themeArmyBlue
                      }
                      if (scatterGraph.theme.backgroundEnabled === true) {
                          backgroundToggle.text = "Hide Background";
                      } else {
                          backgroundToggle.text = "Show Background";
                      }
                  }
              }

              NewButton {
                  id: backgroundToggle
                  Layout.fillHeight: true
                  Layout.fillWidth: true
                  text: "Hide Background"
                  onClicked: {
                      if (scatterGraph.theme.backgroundEnabled === true) {
                          scatterGraph.theme.backgroundEnabled = false;
                          text = "Show Background";
                      } else {
                          scatterGraph.theme.backgroundEnabled = true;
                          text = "Hide Background";
                      }
                  }
              }

              NewButton {
                  id: exitButton
                  Layout.fillHeight: true
                  Layout.fillWidth: true
                  text: "Quit"
                  onClicked: Qt.quit(0);
              }
          }
      }