Qt Quick 2 Scatter Example▲
Sélectionnez
/****************************************************************************
**
** 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
);
}
}
}