File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ find_package(Qt6 COMPONENTS
1818 ShaderTools
1919 DataVisualization
2020 TextToSpeech
21+ Charts
2122 REQUIRED )
2223
2324if (NOT EMSCRIPTEN)
Original file line number Diff line number Diff line change @@ -7,6 +7,9 @@ qt_add_qml_module(xbot2_gui_liveplot
77 Plotter.qml
88 PlotterLegend.qml
99 Plot.qml
10+ SOURCES plotrebuilder.h plotrebuilder.cpp
1011)
1112
13+ target_link_libraries (xbot2_gui_liveplot PRIVATE Qt6::Charts )
14+
1215target_link_libraries (xbot2_gui PRIVATE xbot2_gui_liveplotplugin )
Original file line number Diff line number Diff line change @@ -63,6 +63,7 @@ MultiPaneResponsiveLayout {
6363 spacing: 3
6464
6565 Button {
66+ width: parent .width
6667 text: ' Reset'
6768 onClicked: livePlot .resetView ()
6869 }
@@ -78,11 +79,10 @@ MultiPaneResponsiveLayout {
7879 font .pointSize : 10
7980 }
8081
81- DoubleSpinBox {
82+ SpinBox {
8283 id: rangeSpin
8384 from: 0
8485 to: 1000
85- stepSize: 1
8686 value: 10
8787 }
8888 }
Original file line number Diff line number Diff line change @@ -2,10 +2,15 @@ import QtQuick
22import QtCharts
33import QtQuick.Controls
44import QtQuick.Layouts
5+
56import Common
67
78Item {
89
10+ PlotRebuilder {
11+ id: rebuilder
12+ }
13+
914 // public
1015 property Item plotterLegend
1116
@@ -46,17 +51,22 @@ Item {
4651 }
4752
4853 function rebuild () {
54+
55+ if (_rebuilding) {
56+ return
57+ }
58+
4959 _rebuilding = true
60+
61+
62+
5063 for (let i = 0 ; i < chart .count ; i++ ) {
5164
5265 // save points, type, name
5366 let series = chart .series (i)
5467 console .log (series, series .name )
5568
56- let points = Array (series .count )
57- for (var k = 0 ; k < series .count ; k++ ) {
58- points[k] = series .at (k)
59- }
69+ let points = rebuilder .getPoints (series)
6070 let type = series .type
6171 let name = series .name
6272
@@ -66,15 +76,14 @@ Item {
6676 // create
6777 series = chart .createSeries (type,
6878 name);
79+
6980 series .useOpenGL = true
7081 series .antialiasing = false
7182 series .axisX = axisTime
7283 series .axisY = axisValueLeft
7384
7485 // fill with saved points
75- for (let k = 0 ; k < points .length ; k++ ) {
76- series .append (points[k].x , points[k].y )
77- }
86+ rebuilder .setPoints (series, points)
7887
7988 // update seriesdata
8089 currSeries[name].series = series
Original file line number Diff line number Diff line change 1+ #include " plotrebuilder.h"
2+
Original file line number Diff line number Diff line change 1+ #ifndef PLOTREBUILDER_H
2+ #define PLOTREBUILDER_H
3+
4+ #include < QtCharts/QtCharts>
5+ #include < QtCharts/QXYSeries>
6+ #include < QtQmlCore/QtQmlCore>
7+
8+ class PlotRebuilder : public QObject
9+ {
10+ Q_OBJECT
11+
12+ public:
13+
14+ QML_ELEMENT
15+
16+ Q_INVOKABLE static QList<QPointF> getPoints (const QXYSeries* s)
17+ {
18+ qInfo () << " saving" << s->points ().size () << " points from" << (void *)s;
19+ return s->points ();
20+ }
21+
22+ Q_INVOKABLE static void setPoints (QXYSeries* s, const QList<QPointF>& points)
23+ {
24+ qInfo () << " appending" << points.size () << " points to" << (void *)s;
25+ s->append (points);
26+ }
27+ };
28+
29+ #endif // PLOTREBUILDER_H
You can’t perform that action at this time.
0 commit comments