//本文描述QCustomPlot的简单使用,

//使用QCustomPlot 画曲线分5步

//1.初始化

//2.发送

//3.接收

//4.绑定

//5.重绘

//通常单独的线程发送,发送线程通过emit函数或者waik函数告诉接收方,

//接收方通常是GUI类的函数,把数据放进vector容器

//定时绑定vector容器和重绘,可以比第2步和第3步慢(因为我们有vector容器装好了的)

//在2、3、4、5步循环往复。

//1.初始化

struct CurveInfo
{
    QString nameX;// X轴label
    QString nameY;// Y轴label
    double minX;//X轴最小
    double minY;//Y轴最小
    double maxX;//X轴最大
    double maxY;//Y轴最大
};

initCurve(QCustomPlot* plot, CurveInfo curveInfo)
{
    plot->setBackground(QBrush(QColor(220, 220, 220)));//背景灰

    plot->addGraph();
    plot->graph(0)->setPen(QPen(Qt::blue));//画笔颜色

    plot->xAxis->setLabel(curveInfo.nameX);//X轴颜色
    plot->yAxis->setLabel(curveInfo.nameY);//Y轴颜色

    // 支持鼠标拖拽轴的范围、滚动缩放轴的范围,左键点选图层(每条曲线独占一个图层)
    plot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);

    plot->xAxis->setRange(curveInfo.minX, curveInfo.maxX);
    plot->yAxis->setRange(curveInfo.minY, curveInfo.maxY);

    // 设置坐标系格栅背景
    // plot->xAxis->grid()->setPen(QPen(Qt::darkGreen));
    // plot->yAxis->grid()->setPen(QPen(Qt::darkGreen));
    plot->xAxis->grid()->setSubGridVisible(true);//X栅格可见
    plot->yAxis->grid()->setSubGridVisible(true);/Y栅格可见
    //坐标内背景
    plot->axisRect()->setBackground(QBrush(QColor(30, 30, 30)));

    plot->replot();
}

//2.发送

//用信号的emit函数或者QwaitCondition的wakeOne()函数

//3.接收

//如果使用QwaitCondition,那么要单独搞个接收线程,GUI是不太可能有死循环的。

//4.绑定

//绑定函数的原型是,第1个参数是横轴对应容器,第2参数是纵轴对应容器,第三个参数可不写

void setData(const QVector<double> &keys,

                     const QVector<double> &values,

                      bool alreadySorted=false

                    );

//5.重绘

//重绘函数的原型是

void replot();

其余可参考

QCustomPlot 曲线各种属性设置介绍_customplot在曲线上添加实心圆点-CSDN博客CustomPlot 曲线各种属性设置介绍_customplot在曲线上添加实心圆点-CSDN博客QCustomPlot 曲线各种属性设置介绍_customplot在曲线上添加实心圆点-CSDN博客

04-27 00:17