/****************************************************************************
**
** 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
ChartView {
id: chartViewanimationOptions: ChartView.NoAnimationtheme: ChartView.ChartThemeDark
property boolopenGL: true
property boolopenGLSupported: trueonOpenGLChanged: {
if (openGLSupported) {
series("signal 1").useOpenGL=openGL;
series("signal 2").useOpenGL=openGL;
}
}
Component.onCompleted: {
if (!series("signal 1").useOpenGL) {
openGLSupported=falseopenGL=false
}
}
ValueAxis {
id: axisY1min: -1max: 4
}
ValueAxis {
id: axisY2min: -10max: 5
}
ValueAxis {
id: axisXmin: 0max: 1024
}
LineSeries {
id: lineSeries1name: "signal 1"axisX: axisXaxisY: axisY1useOpenGL: chartView.openGL
}
LineSeries {
id: lineSeries2name: "signal 2"axisX: axisXaxisYRight: axisY2useOpenGL: chartView.openGL
}
Timer {
id: refreshTimerinterval: 1/60*1000// 60 Hzrunning: truerepeat: trueonTriggered: {
dataSource.update(chartView.series(0));
dataSource.update(chartView.series(1));
}
}
functionchangeSeriesType(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
}
}
functioncreateAxis(min, max) {
// The following creates a ValueAxis object that can be then set as a x or y axis for a seriesreturnQt.createQmlObject("import QtQuick 2.0; import QtCharts 2.0; ValueAxis { min: "+min+"; max: "+max+" }", chartView);
}
functionsetAnimations(enabled) {
if (enabled)
chartView.animationOptions=ChartView.SeriesAnimations;
elsechartView.animationOptions=ChartView.NoAnimation;
}
functionchangeRefreshRate(rate) {
refreshTimer.interval=1/Number(rate) *1000;
}
}