From ce03d5bff5ca0c06ac884628c8ef65b902de669f Mon Sep 17 00:00:00 2001 From: Nikita Kostovsky Date: Sat, 9 Nov 2024 17:28:58 +0100 Subject: Initial commit --- QmlCustomPlot.h | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 QmlCustomPlot.h (limited to 'QmlCustomPlot.h') diff --git a/QmlCustomPlot.h b/QmlCustomPlot.h new file mode 100644 index 0000000..c56038c --- /dev/null +++ b/QmlCustomPlot.h @@ -0,0 +1,72 @@ +#pragma once + +#include +#include + +//class QCustomPlot; +//class QCPAbstractPlottable; +//class QCPItemPixmap; +//class QCPGraph; +using Points2D = QVector; + +class QmlCustomPlot : public QQuickPaintedItem +{ + Q_OBJECT + QML_ELEMENT + Q_PROPERTY(QCustomPlot* plot READ plot WRITE setPlot NOTIFY plotChanged) + Q_PROPERTY(int fps READ fps WRITE setFps NOTIFY fpsChanged) + +public: + QmlCustomPlot(QQuickItem* parent = nullptr); + ~QmlCustomPlot() Q_DECL_OVERRIDE; + + void paint(QPainter* painter) Q_DECL_OVERRIDE; + + Q_INVOKABLE void initCustomPlot(); + +public: + QCustomPlot* plot() const; + int fps() const; + +public slots: + void setPlot(QCustomPlot *plot); + void setPoints(const QVector points); + void setLines(const QVector lines); + void setContours(const QVector contours); + void setFps(int fps); + +signals: + void plotChanged(); + void fpsChanged(); + +protected: + void routeMouseEvents(QMouseEvent* event); + void routeWheelEvents(QWheelEvent* event); + + void mousePressEvent(QMouseEvent* event) override; + void mouseReleaseEvent(QMouseEvent* event) override; + void mouseMoveEvent(QMouseEvent* event) override; + void mouseDoubleClickEvent(QMouseEvent* event) override; + void wheelEvent(QWheelEvent *event) override; + + void timerEvent(QTimerEvent *event) override; + +private: + QCustomPlot* m_plot = nullptr; + int m_timerId; + QCPItemPixmap* m_bg = nullptr; + int m_fps = 0; + int m_fpsCounter = 0; + + QCPGraph * m_profileGraph = nullptr; + QVector m_contourGraphs; + + QVector m_lineItems; + +private slots: + void graphClicked(QCPAbstractPlottable * plottable); + void onCustomReplot(); + void updateCustomPlotSize(); +}; + +//Q_DECLARE_METATYPE(QCustomPlot) -- cgit v1.2.3-70-g09d2