main.qml Example File
qmlaxisformatter/qml/qmlaxisformatter/main.qml
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);
}
}
}