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); } } }