qcustomplot多个坐标系

继承重写了qcostomplot原有布局样式,添加了部分自定义功能函数。
补充多个Y轴轴线始终保持对齐的方法:

// 创建一个外边距组,使组内成员有相同的外边距
QCPMarginGroup *marginGroup = new QCPMarginGroup(this); // this == QCustomPlot, 我这继承的QCustomPlot
// 新建一个坐标系
QCPAxisRect* Rect = new QCPAxisRect(this, true);
//! 设置外边距组,将要对齐的坐标系都设置外边距组,所有成员都将保持相同的外边距
Rect->setMarginGroup(QCP::msLeft | QCP::MarginSide::msRight, marginGroup);
#ifndef QTTCUSTOMPLOT_H
#define QTTCUSTOMPLOT_H

#include <QObject>

#include "qcustomplot.h"

class QttCustomPlot : public QCustomPlot
{
    Q_OBJECT


public:
    explicit QttCustomPlot(int count);
    //! legend
    void setLegendVisible(bool on);
    //!
    void addRect(int idx);
    //!
    void removeRect(int idx);
    //!
    void hideAxis(int rectId, QCPAxis::AxisType type, bool on = false);
    //!
    void hideAxises(bool on = false);
    //!
    QCPGraph* getGraph(int RectId, int GraphId);
    //!
    void addData(int RectId, int GraphId, double x, double y);
    //!
    void addData(int RectId, int GraphId, QVector<double> x, QVector<double> y);
    //!
    void addData(QCPGraph* graph, double x, double y);
    //!
    void addData(QCPGraph* graph, QVector<double> x, QVector<double> y);
    //!
    void clearData(int RectId, int GraphId);
    //!
    void clearData(QCPGraph* graph);
    //!
    void setAutoScroll(bool on);
    //!
    void connectAllxAsix(bool on);
    //!
    void setGraphColor(QCPGraph* pGraph);

signals:


private slots:
    void when_selectionChangedByUser();
    void when_legendDoubleClick(QCPLegend*, QCPAbstractLegendItem*, QMouseEvent*);


private:
    //
    int rCount;
    //
    QList<QCPAxisRect *> RectList;
    //
    bool AxisHide;
    // 隐藏legend及其所在布局LegendLayoutGrid
    bool legendVisible;
    //
    QCPLayoutGrid* plotLayoutGrid;
    QCPLayoutGrid* legendLayoutGrid;
    //
    QCPLegend* legend;
    //
    bool isAutoScroll;
    //!
    void init_customplot();
    //!
    void init_LayoutGrid();
    //!
    void init_Rect();
    //!
    void init_legend();
    //!
    void qreplot();
    //!
    void autoScroll();
};

#endif // QTTCUSTOMPLOT_H

功能如下:

  1. 动态添加坐标系
  2. 隐藏指定轴
  3. 多个坐标系X轴同步
  4. legend
  5. 双击曲线修改颜色
  6. 暂时只支持一个坐标系一条曲线(可以添加多条曲线,但是无法指定删除某一条曲线,所以在删除曲线图层时容易出现问题)

下载链接

效果如图:

在这里插入图片描述

在这里插入图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值