文章目录

  • 1、QCustomPlot的简介
  • 2、QCustomPlot库的下载和安装
  • 3、QCustomPlot中的常用类介绍
  • 4、QCustomPlot的使用
    • 4.1、解压QCustomPlot的压缩包
    • 4.2、模块化管理图表库文件
    • 4.3、控件提升
  • 5、完整代码
  • 6、效果图

1、QCustomPlot的简介

QCustomPlot是Qt的一个小型第三方图表库,支持静态/动态曲线、柱状图、蜡烛图、频谱图等。使用方便,仅需在项目中加入头文件qcustomplot.h和qcustomplot.cpp源文件即可,或者把它当做一个库来添加到项目当中,该绘图库专注于制作美观、出版物质量高的2D绘图、图形和图表,并为实时可视化应用程序提供高性能。

2、QCustomPlot库的下载和安装

QCustomPlot的官网链接:https://www.qcustomplot.com/index.php/introduction
QCustomPlot的下载链接:https://www.qcustomplot.com/index.php/download

如下是QCustomPlot的安装图:

如上图,点击QCustomPlot.tar.gz即可下载QCustomPlot。

3、QCustomPlot中的常用类介绍

  • QCustomPlot:图表类,用于图表显示以及交互
  • QCPLayer:图层类,用于管理图层元素,所有可显示的对象都继承自图层元素
  • QCPAbstractPlottable:绘图元素类,包含折线图(QCPGraph)、曲线图(QCPCurve)、柱状图(QCPBars)、盒子图(QCPStaiBox)、QCPColorMap(色谱图)、金融图(QCPFinancial)
  • QCPAxisRect:坐标轴矩形,一个坐标轴矩形包含上下左右四个坐标,但可以添加多个坐标

4、QCustomPlot的使用

4.1、解压QCustomPlot的压缩包

首先是解压QCustomPlot的压缩包文件:

4.2、模块化管理图表库文件

首先是在qt中创建一个项目文件,然后在项目工程中创建一个名为QCustomPlot的文件夹,将qcustomplot.h和qcustomplot.cpp文件复制到该文件夹中,然后创建一个文本文件,然后是修改文本文件的后缀名为pri。

然后通过qmake语法将pri文件加载到主项目工程中:

如上是通过include将QCustomPlot这个图表类模块导入到主项目工程中,实现了模块化管理项目,其次我们要导入Qt中的打印模块(printsupport)。

QCustomPlot.pri中的qmake语句如下:

4.3、控件提升

在QtDesinger中设计ui界面,拖拽一个widget控件放入主窗体中,然后对主窗体使用网格布局:

右击widget控件,选择提升为,就会弹出一个提升控件的对话框,提升的类名称选择QCustomPlot,头文件为QCustomPlot/qcustomplot.h:

当右侧widget控件的类名显示为QCustomPlot时,则代表成功:

5、完整代码

mainwindow.h如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include"QCustomplot/qcustomplot.h"QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();void plotDemo1();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setWindowTitle("QCustomPlot Demo");plotDemo1();
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::plotDemo1()
{this->ui->widget->addGraph();  //添加数据曲线//为坐标轴添加标签this->ui->widget->xAxis->setLabel("X");this->ui->widget->yAxis->setLabel("Y");//设置坐标轴范围this->ui->widget->xAxis->setRange(-1,1);this->ui->widget->yAxis->setRange(0,1);//模拟数据点QVector<double> x(101),y(101);for(int i=0;i<101;i++){x[i]=i/50.0-1;y[i]=x[i]*x[i];}//为数据曲线赋值this->ui->widget->graph(0)->setData(x,y);//设置图例名称this->ui->widget->graph(0)->setName("First QCP Demo");//显示图例this->ui->widget->legend->setVisible(true);//刷新图表this->ui->widget->replot();
}

6、效果图

QCustomPlot的使用教程(一)相关推荐

  1. QCustomPlot的使用教程(二)

    文章目录 1.绘制多条曲线 2.绘制柱状图 1.绘制多条曲线 上一节中简单介绍了如何使用QCustomPlot绘制一条简单的曲线,下面将介绍如何通过QCustomPlot绘制多条曲线. 如下是参考官网 ...

  2. QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现

    QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现 结构 UI部分 代码部分 step1:实现串口数据接受 串口接受数据格式 在`.pro`文件中添加`serialp ...

  3. qcustomplot使用教程--基本绘图

    0.说明 本节翻译总结自:Qt Plotting Widget QCustomPlot - Basic Plotting 本节内容是使用QCustomPlot进行基本绘图. 本节教程都使用custom ...

  4. QCustomPlot基础教程(十)——QCustomPlot中图例的相关设置

    目录 1.前言 2.显示图例 3.设置图例位置 4.设置图例背景 5.设置图例名称 6.设置边框隐藏 7.其他设置 8.拓展1--将图例统一放在下方 9.拓展2--设置图例与曲线同步选中 1.前言 基 ...

  5. Qt使用QCustomPlot画坐标图教程

    调用QCustomPlot库的方式有两种: 1.直接放入源码cpp和.h,然后直接调用 2.加载QCustomPlot的库,so或者dll project文件中加入printsupport QT += ...

  6. QCustomPlot基础教程(八)——QCustomPlot将绘制的图形保存导出

    目录 一.函数介绍 二.代码示例 一.函数介绍 QCustomPlot提供了四种常用的save接口,其格式如下: saveBmp(const QString &fileName, int wi ...

  7. qt超强精美绘图控件 - QCustomPlot一览 及 安装使用教程

    1.概述 QCustomPlot 是一个超强超小巧的qt绘图类,非常漂亮,非常易用,只需要加入一个qcustomplot.h和qcustomplot.cpp文件即可使用,远比qwt方便和漂亮,可以自己 ...

  8. (一)QCustomPlot常见属性设置、多曲线绘制、动态曲线绘制、生成游标、矩形放大等功能实现

    系列文章目录 提示:这里是该系列文章的所有文章的目录 第一章: (一)QCustomPlot常见属性设置.多曲线绘制.动态曲线绘制.生成游标.矩形放大等功能实现 第二章: (二)QCustomPlot ...

  9. Qt之QCustomPlot

    在学完各种dll的调用方式和QAbstractItemModel之后,终于到了这一步,之前用过CustomPlot来实现简单图的绘制,但是这次我需要从头开始,理解内涵 文章目录 1 Main Page ...

最新文章

  1. 让IE8和IE9支持 placeholder
  2. 在夕阳下第一次写文章的菜鸟
  3. 上顿号符号_上顿号符号_标点符号(1):谈谈顿号的用法
  4. Java 文件操作 File 及 RandomAccessFile
  5. 信息学奥赛一本通 1203:扩号匹配问题 | OpenJudge 2.2 2705:扩号匹配问题
  6. C Primer Plus 第9章 函数 9.4 多源代码文件程序的编译
  7. linux 开源谷歌浏览器_开发人员浏览器,Google开源版本等
  8. JavaWeb书城项目(尚硅谷视频整理自用)
  9. 申请被拒模板 (三)
  10. 扫一扫就可一键叫车 杭州暖心车站让老人去往生活里的远处
  11. 水溶性CdSe/ZnS量子点(表面由亲水配体包裹的核/壳型荧光纳米材料)
  12. 在html5中,用于获得用户当前位置的方法
  13. Mybatis+spring知识点
  14. python能画k线图吗_python画k线图(一天的k线图怎么画)
  15. TCP/IP详解卷1:第十四章 DNS 域名系统
  16. 学习 Go 语言 0x04:《Go 语言之旅》中切片的练习题代码
  17. java中scanner是什么意思_java中scanner是什么
  18. ORA-01031: insufficient privileges
  19. 计算机中腾讯QQ程序的安装路径,更改应用商店内应用的安装位置
  20. 合并多个PPT文件到一个文件中的方法

热门文章

  1. 【百度地图API】建立全国银行位置查询系统(五)——如何更改百度地图的信息窗口内容?...
  2. 打印一个字符串的全部子序列,包括空字符串
  3. 哈希碰撞攻击与防范机制
  4. java 开源 portal_四种开源门户portal软件比较
  5. 教你在Win10系统中迅速打开便签应用的方法
  6. MAT 分析OOM out of memory模拟OOM Killer
  7. 未来技术方向——“乐高式”可组装式开发能力
  8. SAP工具箱 自动生成发出接口程序(三 配置表)
  9. ECharts绘制折线图
  10. 【论文阅读】CVPR2023 ||CFA: Class-wise Calibrated Fair Adversarial Training