当前位置: 首页 > news >正文

Qt QCustomPlot 图形库详解

文章目录

  • 原文
  • 1. 下载qcustomplot.h与qcustomplot.cpp后,将代码文件拷贝到本地工程,并添加到工程项目
  • 2. 看到文件后就是添加成功了
  • 3. 在界面中拖拽一个Widget控件,选中并右键选中“提升为”,将原来的Widget控件已成为一个带坐标的 CustomPlot 控件
  • 4. 添加printsupport

原文

QCustomPlot绘图类详解(大白话)

1. 下载qcustomplot.h与qcustomplot.cpp后,将代码文件拷贝到本地工程,并添加到工程项目

在这里插入图片描述

2. 看到文件后就是添加成功了

在这里插入图片描述

3. 在界面中拖拽一个Widget控件,选中并右键选中“提升为”,将原来的Widget控件已成为一个带坐标的 CustomPlot 控件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果是代码方式添加就不需要对控件提升的这布操作,直接使用QCustomPlot 类声明对象即可。如

    MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);QCustomPlot *pCustomPlot = new QCustomPlot(this);pCustomPlot->resize(300, 300);
}

4. 添加printsupport

如果Qt版本在5.0以上,需要在.pro文件中的QT变量加上printsupport:

QT += widgets printsupport

我是vs开发,所以进行工程配置
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
.cpp

#include "QcustomPlotApplication.h"
#include "ui_QcustomPlotApplication.h"
#include "qcustomplot.h"//防止中文乱码
//#pragma execution_character_set("utf-8")#define PT_CNT       200    // 点数
#define GRAPH_CNT    5      // 图数QcustomPlotApplication::QcustomPlotApplication(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);InitForm();mRefreshCnt = 1;//连接信号槽connect(ui.btnDynamicDraw,&QPushButton::clicked,this,&QcustomPlotApplication::btnDynamicDraw_clicked);connect(ui.btnContinueDraw, &QPushButton::clicked, this, &QcustomPlotApplication::btnContinueDraw_clicked);
}QcustomPlotApplication::~QcustomPlotApplication()
{}void QcustomPlotApplication::InitForm()
{//设置图表交互,允许用户通过拖动缩放来与图表进行交互//QCP::iRangeDrag允许拖动图表(改变可见范围),而QCP::iRangeZoom允许通过鼠标滚轮或手势缩放图表。ui.plotWidget->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);#if 0//设置背景颜色ui.plotWidget->setBackground(QBrush(QColor("#2F4F4F")));//设置X轴标签为电流ui.plotWidget->xAxis->setLabel(QStringLiteral("电流"));//设置Y轴标签为时间(min)ui.plotWidget->yAxis->setLabel(QStringLiteral("时间(min)"));//设置字体QFont plotFont = font();//设置字体大小plotFont.setPointSizeF(10.0

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 代码随想录算法训练营第三十天|查找重叠区间、划分字母区间
  • 自动化测试必会之数据驱动测试
  • 【数据结构和算法】时间复杂度和空间复杂度
  • springBoot框架
  • 守护数字堡垒:全面掌握安全配置管理
  • 什么是令牌桶算法?工作原理是什么?使用它有哪些优点和注意事项?
  • C++ | 深入理解C++的IO流:从控制台输出流到文件输出流的应用
  • LeetCode面试题Day8|LeetCode13 罗马数字转整数、LeetCode12 整数转罗马数字
  • Events and the Kernel
  • HarmonyOS NEXT星河版零基础入门(2)
  • 3-2 光敏电阻(智能应用篇)
  • 构建坚不可摧的防线:全面指南到高效信息安全管理体系
  • 力扣第五十六题——合并区间
  • 设计模式-装饰者模式
  • ubuntu创建txt
  • 【技术性】Search知识
  • 【知识碎片】第三方登录弹窗效果
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • k8s如何管理Pod
  • Markdown 语法简单说明
  • SAP云平台里Global Account和Sub Account的关系
  • Web标准制定过程
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  •  一套莫尔斯电报听写、翻译系统
  • 硬币翻转问题,区间操作
  • 鱼骨图 - 如何绘制?
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 国内开源镜像站点
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​ssh免密码登录设置及问题总结
  • ​渐进式Web应用PWA的未来
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $.ajax()
  • (11)MSP430F5529 定时器B
  • (6)STL算法之转换
  • (Java入门)学生管理系统
  • (二)构建dubbo分布式平台-平台功能导图
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (三)终结任务
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (十)T检验-第一部分
  • (转)Linq学习笔记
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)大型网站架构演变和知识体系
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .net Stream篇(六)
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例