QT C++ QCustomPlot 简单使用

ops/2024/10/18 16:49:24/

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

//使用QCustomPlot 画曲线分5步

//1.初始化

//2.发送

//3.接收

//4.绑定

//5.重绘

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

//接收方通常是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博客


http://www.ppmy.cn/ops/28179.html

相关文章

maven插件:dockerfile-maven-plugin和docker-maven-plugin

Maven插件dockerfile-maven-plugin和docker-maven-plugin都是为Java开发人员提供了一种便捷的方式&#xff0c;通过Maven构建流程来自动化创建、管理和推送Docker镜像。虽然它们有着相似的目标&#xff0c;即集成Docker与Maven项目&#xff0c;但这两个插件在实现细节、功能侧重…

jsp驾校管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 驾校管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用serlvetdaobean mvc 模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发…

【linux】进程(深入理解linux进程状态)

开始之前先说一个与本文无关的小知识&#xff0c;chdir命令可以更改当前进程的工作目录哦。 目录 linux具体进程状态&#xff1a;R && S&#xff1a;T && t&#xff1a;D&#xff1a;僵尸进程 && 孤儿进程&#xff1a; OS的理论线&#xff1a;运行&…

【刘炼前瞻活动】精金百炼

至诚至性&#xff0c;剑由心发。浑金璞玉&#xff0c;百炼锋成。 1. 暮春 润州暮春多夜雨&#xff0c;雨丝细密如酥&#xff0c;最宜安睡&#xff0c;却总有苦心人不肯沉眠。 刘府演武场边&#xff0c;小少爷刘炼伞也没撑&#xff0c;就那么痴痴淋在雨中&#xff0c;一边看着台…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6.4--汇编LED驱动程序

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

泰勒创造力达到顶峰?(上)

hello,大家好&#xff01;今天看一篇经济学人的一篇评论&#xff0c;说的是泰勒斯威夫特当前的创造力。经济学人总是语不惊人死不休&#xff0c;看看它对这位音乐天才做了怎样的评价。 事先声明哈&#xff0c;本文就是一种英语学习类讲述&#xff0c;没带任何个人色彩&#xff…

开发板上执行shell脚本报错“xxx.sh: not foundline 8: ”

问题 开发板上执行start.sh文件&#xff0c;然后在start.sh脚本里执行另一个shell脚本&#xff0c;报错“xxx.sh: not foundline 8: ” 原因 start.sh文件开始没有指定解释器。 解决办法 在start.sh文件开始指定解释器&#xff0c;如下&#xff1a; 注意&#xff1a;shel…

【备战软考(嵌入式系统设计师)】04-嵌入式软件架构

嵌入式操作系统 嵌入式系统有以下特点&#xff1a; 要求编码体积小&#xff0c;能够在有限的存储空间内运行。 面向应用&#xff0c;可以进行裁剪和移植。 用于特定领域&#xff0c;可以支持多任务。 可靠性高&#xff0c;及时响应&#xff0c;无需人工干预独立运行。 实…