@@ -25,6 +25,7 import QtCommercial.Chart 1.1 | |||||
25 | ChartView { |
|
25 | ChartView { | |
26 | id: chartView |
|
26 | id: chartView | |
27 | animationOptions: ChartView.NoAnimation |
|
27 | animationOptions: ChartView.NoAnimation | |
|
28 | theme: ChartView.ChartThemeDark | |||
28 |
|
29 | |||
29 | ValueAxis { |
|
30 | ValueAxis { | |
30 | id: axisY1 |
|
31 | id: axisY1 | |
@@ -72,24 +73,36 ChartView { | |||||
72 | } |
|
73 | } | |
73 | //![2] |
|
74 | //![2] | |
74 |
|
75 | |||
|
76 | //![3] | |||
75 | function changeSeriesType(type) { |
|
77 | function changeSeriesType(type) { | |
76 |
chartView. |
|
78 | chartView.removeAllSeries(); | |
77 | chartView.series(0).destroy(); |
|
79 | ||
78 | var seriesCount = 2; |
|
80 | // Create two new series of the correct type. Axis x is the same for both of the series, | |
79 | for (var i = 0; i < seriesCount; i++) { |
|
81 | // but the series have their own y-axes to make it possible to control the y-offset | |
80 | var series; |
|
82 | // of the "signal sources". | |
81 |
|
|
83 | if (type == "line") { | |
82 |
|
|
84 | scopeView.createSeries(ChartView.SeriesTypeLine, "signal 1", createAxis(0, 1000), createAxis(-1, 4)); | |
83 | } else if (type == "spline") { |
|
85 | scopeView.createSeries(ChartView.SeriesTypeLine, "signal 2", chartView.axisX(), createAxis(-10, 5)); | |
84 | series = chartView.createSeries(ChartView.SeriesTypeSpline, "signal " + (i + 1)); |
|
86 | } else if (type == "spline") { | |
85 | } else { |
|
87 | scopeView.createSeries(ChartView.SeriesTypeSpline, "signal 1", createAxis(0, 1000), createAxis(-1, 4)); | |
86 |
|
|
88 | scopeView.createSeries(ChartView.SeriesTypeSpline, "signal 2", chartView.axisX(), createAxis(-10, 5)); | |
87 | series.markerSize = 3; |
|
89 | } else { | |
88 | series.borderColor = "transparent"; |
|
90 | var series1 = scopeView.createSeries(ChartView.SeriesTypeScatter, "signal 1", createAxis(0, 1000), createAxis(-1, 4)); | |
89 | } |
|
91 | series1.markerSize = 3; | |
|
92 | series1.borderColor = "transparent"; | |||
|
93 | var series2 = scopeView.createSeries(ChartView.SeriesTypeScatter, "signal 2", chartView.axisX(), createAxis(-10, 5)); | |||
|
94 | series2.markerSize = 3; | |||
|
95 | series2.borderColor = "transparent"; | |||
90 | } |
|
96 | } | |
91 | } |
|
97 | } | |
92 |
|
98 | |||
|
99 | function createAxis(min, max) { | |||
|
100 | // The following creates a ValueAxis object that can be then set as a x or y axis for a series | |||
|
101 | return Qt.createQmlObject("import QtQuick 1.1; import QtCommercial.Chart 1.1; ValueAxis { min: " | |||
|
102 | + min + "; max: " + max + " }", chartView); | |||
|
103 | } | |||
|
104 | //![3] | |||
|
105 | ||||
93 | function setAnimations(enabled) { |
|
106 | function setAnimations(enabled) { | |
94 | if (enabled) |
|
107 | if (enabled) | |
95 | scopeView.animationOptions = ChartView.SeriesAnimations; |
|
108 | scopeView.animationOptions = ChartView.SeriesAnimations; |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -24,4 +24,8 | |||||
24 | The data of the line series is updated with a QML timer. In a real life application the |
|
24 | The data of the line series is updated with a QML timer. In a real life application the | |
25 | updating could triggered with a signal from Qt C++ code. |
|
25 | updating could triggered with a signal from Qt C++ code. | |
26 | \snippet ../demos/qmloscilloscope/qml/qmloscilloscope/ScopeView.qml 2 |
|
26 | \snippet ../demos/qmloscilloscope/qml/qmloscilloscope/ScopeView.qml 2 | |
|
27 | ||||
|
28 | The oscilloscope also allows you to switch the type of the series used for visualizing the | |||
|
29 | signal sources. This is implemented by dynamically destroying and creating series: | |||
|
30 | \snippet ../demos/qmloscilloscope/qml/qmloscilloscope/ScopeView.qml 3 | |||
27 | */ |
|
31 | */ |
@@ -164,12 +164,14 QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||||
164 | */ |
|
164 | */ | |
165 |
|
165 | |||
166 | /*! |
|
166 | /*! | |
167 | \qmlmethod AbstractSeries ChartView::createSeries(SeriesType type, string name) |
|
167 | \qmlmethod AbstractSeries ChartView::createSeries(SeriesType type, string name, AbstractAxis axisX, AbstractAxis axisY) | |
168 |
Creates a series object of \a type to the chart |
|
168 | Creates a series object of \a type to the chart with name \a name, optional axis \a axisX and | |
|
169 | optional axis \a axisY. For example: | |||
169 | \code |
|
170 | \code | |
170 | var scatter = chartView.createSeries(ChartView.SeriesTypeScatter, "scatter series"); |
|
171 | // lineSeries is a LineSeries object that has already been added to the ChartView; re-use it's axes | |
171 | scatter.markerSize = 22; |
|
172 | var myAxisX = chartView.axisX(lineSeries); | |
172 | scatter.append(1.1, 2.0); |
|
173 | var myAxisY = chartView.axisY(lineSeries); | |
|
174 | var scatter = chartView.createSeries(ChartView.SeriesTypeScatter, "scatter series", myAxisX, myAxisY); | |||
173 | \endcode |
|
175 | \endcode | |
174 | */ |
|
176 | */ | |
175 |
|
177 | |||
@@ -184,8 +186,13 QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||||
184 | */ |
|
186 | */ | |
185 |
|
187 | |||
186 | /*! |
|
188 | /*! | |
|
189 | \qmlmethod Axis ChartView::axisX(QAbstractSeries *series) | |||
|
190 | The x-axis of the series. | |||
|
191 | */ | |||
|
192 | ||||
|
193 | /*! | |||
187 | \qmlmethod Axis ChartView::axisY(QAbstractSeries *series) |
|
194 | \qmlmethod Axis ChartView::axisY(QAbstractSeries *series) | |
188 | The y-axis of the series. This is the same as the default y-axis of the chart as multiple y-axes are not yet supported. |
|
195 | The y-axis of the series. | |
189 | */ |
|
196 | */ | |
190 |
|
197 | |||
191 | /*! |
|
198 | /*! | |
@@ -554,6 +561,11 QAbstractSeries *DeclarativeChart::series(QString seriesName) | |||||
554 |
|
561 | |||
555 | QAbstractSeries *DeclarativeChart::createSeries(DeclarativeChart::SeriesType type, QString name) |
|
562 | QAbstractSeries *DeclarativeChart::createSeries(DeclarativeChart::SeriesType type, QString name) | |
556 | { |
|
563 | { | |
|
564 | return createSeries(type, name, 0, 0); | |||
|
565 | } | |||
|
566 | ||||
|
567 | QAbstractSeries *DeclarativeChart::createSeries(DeclarativeChart::SeriesType type, QString name, QAbstractAxis *axisX, QAbstractAxis *axisY) | |||
|
568 | { | |||
557 | QAbstractSeries *series = 0; |
|
569 | QAbstractSeries *series = 0; | |
558 |
|
570 | |||
559 | switch (type) { |
|
571 | switch (type) { | |
@@ -597,6 +609,10 QAbstractSeries *DeclarativeChart::createSeries(DeclarativeChart::SeriesType typ | |||||
597 | if (series) { |
|
609 | if (series) { | |
598 | series->setName(name); |
|
610 | series->setName(name); | |
599 | m_chart->addSeries(series); |
|
611 | m_chart->addSeries(series); | |
|
612 | // Set possible user defined axes | |||
|
613 | setAxisX(axisX, series); | |||
|
614 | setAxisY(axisY, series); | |||
|
615 | // Then create the missing axes | |||
600 | createDefaultAxes(series); |
|
616 | createDefaultAxes(series); | |
601 | } |
|
617 | } | |
602 |
|
618 |
@@ -122,6 +122,7 public: | |||||
122 | Q_INVOKABLE QAbstractSeries *series(int index); |
|
122 | Q_INVOKABLE QAbstractSeries *series(int index); | |
123 | Q_INVOKABLE QAbstractSeries *series(QString seriesName); |
|
123 | Q_INVOKABLE QAbstractSeries *series(QString seriesName); | |
124 | Q_INVOKABLE QAbstractSeries *createSeries(DeclarativeChart::SeriesType type, QString name = ""); |
|
124 | Q_INVOKABLE QAbstractSeries *createSeries(DeclarativeChart::SeriesType type, QString name = ""); | |
|
125 | Q_INVOKABLE QAbstractSeries *createSeries(DeclarativeChart::SeriesType type, QString name, QAbstractAxis *axisX, QAbstractAxis *axisY); | |||
125 | Q_INVOKABLE void removeSeries(QAbstractSeries *series) { m_chart->removeSeries(series); } |
|
126 | Q_INVOKABLE void removeSeries(QAbstractSeries *series) { m_chart->removeSeries(series); } | |
126 | Q_INVOKABLE void removeAllSeries() { m_chart->removeAllSeries(); } |
|
127 | Q_INVOKABLE void removeAllSeries() { m_chart->removeAllSeries(); } | |
127 | Q_INVOKABLE void setAxisX(QAbstractAxis *axis, QAbstractSeries *series = 0); |
|
128 | Q_INVOKABLE void setAxisX(QAbstractAxis *axis, QAbstractSeries *series = 0); |
General Comments 0
You need to be logged in to leave comments.
Login now