| /**************************************************************************** |
| ** |
| ** Copyright (C) 2016 The Qt Company Ltd. |
| ** Contact: https://www.qt.io/licensing/ |
| ** |
| ** This file is part of the Qt Charts 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.0 |
| import QtCharts 2.1 |
| |
| //![1] |
| ChartView { |
| id: chartView |
| animationOptions: ChartView.NoAnimation |
| theme: ChartView.ChartThemeDark |
| property bool openGL: true |
| property bool openGLSupported: true |
| onOpenGLChanged: { |
| if (openGLSupported) { |
| series("signal 1").useOpenGL = openGL; |
| series("signal 2").useOpenGL = openGL; |
| } |
| } |
| Component.onCompleted: { |
| if (!series("signal 1").useOpenGL) { |
| openGLSupported = false |
| openGL = false |
| } |
| } |
| |
| ValueAxis { |
| id: axisY1 |
| min: -1 |
| max: 4 |
| } |
| |
| ValueAxis { |
| id: axisY2 |
| min: -10 |
| max: 5 |
| } |
| |
| ValueAxis { |
| id: axisX |
| min: 0 |
| max: 1024 |
| } |
| |
| LineSeries { |
| id: lineSeries1 |
| name: "signal 1" |
| axisX: axisX |
| axisY: axisY1 |
| useOpenGL: chartView.openGL |
| } |
| LineSeries { |
| id: lineSeries2 |
| name: "signal 2" |
| axisX: axisX |
| axisYRight: axisY2 |
| useOpenGL: chartView.openGL |
| } |
| //![1] |
| |
| //![2] |
| Timer { |
| id: refreshTimer |
| interval: 1 / 60 * 1000 // 60 Hz |
| running: true |
| repeat: true |
| onTriggered: { |
| dataSource.update(chartView.series(0)); |
| dataSource.update(chartView.series(1)); |
| } |
| } |
| //![2] |
| |
| //![3] |
| function changeSeriesType(type) { |
| chartView.removeAllSeries(); |
| |
| // Create two new series of the correct type. Axis x is the same for both of the series, |
| // but the series have their own y-axes to make it possible to control the y-offset |
| // of the "signal sources". |
| if (type == "line") { |
| var series1 = chartView.createSeries(ChartView.SeriesTypeLine, "signal 1", |
| axisX, axisY1); |
| series1.useOpenGL = chartView.openGL |
| |
| var series2 = chartView.createSeries(ChartView.SeriesTypeLine, "signal 2", |
| axisX, axisY2); |
| series2.useOpenGL = chartView.openGL |
| } else { |
| var series1 = chartView.createSeries(ChartView.SeriesTypeScatter, "signal 1", |
| axisX, axisY1); |
| series1.markerSize = 2; |
| series1.borderColor = "transparent"; |
| series1.useOpenGL = chartView.openGL |
| |
| var series2 = chartView.createSeries(ChartView.SeriesTypeScatter, "signal 2", |
| axisX, axisY2); |
| series2.markerSize = 2; |
| series2.borderColor = "transparent"; |
| series2.useOpenGL = chartView.openGL |
| } |
| } |
| |
| function createAxis(min, max) { |
| // The following creates a ValueAxis object that can be then set as a x or y axis for a series |
| return Qt.createQmlObject("import QtQuick 2.0; import QtCharts 2.0; ValueAxis { min: " |
| + min + "; max: " + max + " }", chartView); |
| } |
| //![3] |
| |
| function setAnimations(enabled) { |
| if (enabled) |
| chartView.animationOptions = ChartView.SeriesAnimations; |
| else |
| chartView.animationOptions = ChartView.NoAnimation; |
| } |
| |
| function changeRefreshRate(rate) { |
| refreshTimer.interval = 1 / Number(rate) * 1000; |
| } |
| } |