main.qml Example File | Qt Data Visualization 5.12

Qt 5.12 | Qt Data Visualization | Qt Quick 2 Axis Formatter Example | main.qml Example File

Qt Data Visualization | Commercial or GPLv3

# main.qml Example File

qmlaxisformatter/qml/qmlaxisformatter/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.1
      import CustomFormatter 1.0
      import "."

      Rectangle {
          id: mainView
          width: 1280
          height: 1024

          Data {
              id: seriesData
          }

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

          ValueAxis3D {
              id: dateAxis
              formatter: CustomFormatter {
                  originDate:  "2014-01-01"
                  selectionFormat: "yyyy-MM-dd HH:mm:ss"
              }
              subSegmentCount: 2
              labelFormat: "yyyy-MM-dd"
              min: 0
              max: 14
          }

          ValueAxis3D {
              id: logAxis
              formatter: LogValueAxis3DFormatter {
                  id: logAxisFormatter
                  base: 10
                  autoSubGrid: true
                  showEdgeLabels: true
              }
              labelFormat: "%.2f"
          }

          ValueAxis3D {
              id: linearAxis
              labelFormat: "%.2f"
              min: 0
              max: 500
          }

          ValueAxis3D {
              id: valueAxis
              segmentCount: 5
              subSegmentCount: 2
              labelFormat: "%.2f"
              min: 0
              max: 10
          }

          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
                  scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricRight
                  axisZ: valueAxis
                  axisY: logAxis
                  axisX: dateAxis

                  Scatter3DSeries {
                      id: scatterSeries
                      itemLabelFormat: "@xLabel - (@yLabel, @zLabel)"
                      meshSmooth: true
                      ItemModelScatterDataProxy {
                          itemModel: seriesData.model
                          xPosRole: "xPos"
                          yPosRole: "yPos"
                          zPosRole: "zPos"
                      }
                  }
              }
          }

          RowLayout {
              id: buttonLayout
              Layout.minimumHeight: exitButton.height
              width: parent.width
              anchors.left: parent.left
              spacing: 0

              NewButton {
                  id: yAxisBaseChange
                  Layout.fillHeight: true
                  Layout.fillWidth: true
                  state: "enabled"
                  onClicked: {
                      if (logAxisFormatter.base === 10)
                          logAxisFormatter.base = 0
                      else if (logAxisFormatter.base === 2)
                          logAxisFormatter.base = 10
                      else
                          logAxisFormatter.base = 2
                  }
                  states: [
                      State {
                          name: "enabled"
                          PropertyChanges {
                              target: yAxisBaseChange
                              text: "Y-axis log base: " + logAxisFormatter.base
                              enabled: true
                          }
                      },
                      State {
                          name: "disabled"
                          PropertyChanges {
                              target: yAxisBaseChange
                              text: "Y-axis linear"
                              enabled: false
                          }
                      }
                  ]
              }

              NewButton {
                  id: yAxisToggle
                  Layout.fillHeight: true
                  Layout.fillWidth: true
                  text: "Toggle Y-axis"
                  onClicked: {
                      if (scatterGraph.axisY === linearAxis) {
                          scatterGraph.axisY = logAxis
                          yAxisBaseChange.state = "enabled"
                      } else {
                          scatterGraph.axisY = linearAxis
                          yAxisBaseChange.state = "disabled"
                      }
                  }
              }

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