diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-03-28 14:51:26 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-04-01 08:28:57 +0300 |
commit | fe3c9ec0a9fb734e83eb70bc725c303a9d36cd6d (patch) | |
tree | 4996d94f8a7e4498fa8431c9dcc65526a99889bb /examples/datavisualization/qmlaxisformatter/qml | |
parent | 25f48fc046bbce83abeeef0a6081de9f5efcd6d7 (diff) |
Axis formatter customization example
Also refactored the formatter api somewhat:
- Removed virtual from allowNegatives and allowZero and added a
setter function for those. This will make it cleaner if we need to
add similar properties to the axis formatter in the future, as
no new virtual methods can be added without breaking BC.
- Changed the labelValues array to labelStrings list, as it makes
more sense to directly format the strings in recalculate.
Change-Id: I3ea005afa984bb756845ca356b999762e0807415
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'examples/datavisualization/qmlaxisformatter/qml')
3 files changed, 285 insertions, 0 deletions
diff --git a/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/Data.qml b/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/Data.qml new file mode 100644 index 00000000..e692c090 --- /dev/null +++ b/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/Data.qml @@ -0,0 +1,50 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +import QtQuick 2.1 + +Item { + property alias model: dataModel + + ListModel { + id: dataModel + ListElement{ xPos: 2.456103; yPos: 1.0; zPos: 5.0 } + ListElement{ xPos: 5.687549; yPos: 3.0; zPos: 2.5 } + ListElement{ xPos: 2.357458; yPos: 4.1; zPos: 1.0 } + ListElement{ xPos: 4.567458; yPos: 4.75; zPos: 3.9 } + ListElement{ xPos: 6.885439; yPos: 4.9; zPos: 7.2 } + ListElement{ xPos: 2.366769; yPos: 13.42; zPos: 3.5 } + ListElement{ xPos: 7.546457; yPos: 233.1; zPos: 6.9 } + ListElement{ xPos: 2.475867; yPos: 32.91; zPos: 4.1 } + ListElement{ xPos: 8.456546; yPos: 153.68; zPos: 9.52 } + ListElement{ xPos: 3.456348; yPos: 52.96; zPos: 1.6 } + ListElement{ xPos: 1.536446; yPos: 32.4; zPos: 2.92 } + ListElement{ xPos: 8.456666; yPos: 114.74; zPos: 8.18 } + ListElement{ xPos: 5.468486; yPos: 83.1; zPos: 3.8 } + ListElement{ xPos: 6.546586 ; yPos: 63.66; zPos: 3.58 } + ListElement{ xPos: 8.567516 ; yPos: 1.82; zPos: 4.64 } + ListElement{ xPos: 7.678984 ; yPos: 213.18; zPos: 7.22 } + ListElement{ xPos: 7.457569 ; yPos: 63.06; zPos: 4.3 } + ListElement{ xPos: 8.456755 ; yPos: 122.64; zPos: 6.44 } + ListElement{ xPos: 6.234536 ; yPos: 63.96; zPos: 4.38 } + ListElement{ xPos: 9.456718 ; yPos: 243.32; zPos: 4.04 } + ListElement{ xPos: 10.789889 ; yPos: 43.4; zPos: 2.78 } + ListElement{ xPos: 11.346554 ; yPos: 345.12; zPos: 3.1 } + ListElement{ xPos: 12.023454 ; yPos: 500.0; zPos: 3.68 } + } +} diff --git a/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/NewButton.qml b/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/NewButton.qml new file mode 100644 index 00000000..e4fb99d2 --- /dev/null +++ b/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/NewButton.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +import QtQuick 2.1 +import QtQuick.Controls 1.0 +import QtQuick.Controls.Styles 1.0 + +Item { + id: newbutton + + property alias text: buttonText.text + + signal clicked + + implicitWidth: buttonText.implicitWidth + 5 + implicitHeight: buttonText.implicitHeight + 10 + + Button { + id: buttonText + width: parent.width + height: parent.height + + style: ButtonStyle { + label: Component { + Text { + text: buttonText.text + clip: true + wrapMode: Text.WordWrap + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + anchors.fill: parent + } + } + } + onClicked: newbutton.clicked() + } +} diff --git a/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/main.qml b/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/main.qml new file mode 100644 index 00000000..7aba08c6 --- /dev/null +++ b/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/main.qml @@ -0,0 +1,183 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +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 + } + + //! [1] + 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 + } + //! [1] + + //! [2] + ValueAxis3D { + id: logAxis + formatter: LogValueAxis3DFormatter { + id: logAxisFormatter + base: 10 + autoSubGrid: true + showEdgeLabels: true + } + labelFormat: "%.2f" + } + //! [2] + + ValueAxis3D { + id: linearAxis + labelFormat: "%.2f" + min: 0 + max: 500 + } + + //! [0] + ValueAxis3D { + id: valueAxis + segmentCount: 5 + subSegmentCount: 2 + labelFormat: "%.2f" + min: 0 + max: 10 + } + //! [0] + + 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 + //! [3] + axisZ: valueAxis + axisY: logAxis + axisX: dateAxis + //! [3] + + 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); + } + } +} |