QCustomPlot绘制曲线

QCustomPlot绘制曲线

  • 1、前言
  • [2、下载 QCustomPlot 库](#2、下载 QCustomPlot 库)
  • 3、在项目中使用QCustomPlot库
    • [3.1 把 QCustomPlot 加入你的 .pro 文件](#3.1 把 QCustomPlot 加入你的 .pro 文件)
    • [3.2 UI 里放一个 Widget 并提升为 QCustomPlot](#3.2 UI 里放一个 Widget 并提升为 QCustomPlot)
    • [3.3 初始化 QCustomPlot](#3.3 初始化 QCustomPlot)
  • 4、项目文件
    • [4.1 .pro文件](#4.1 .pro文件)
    • [4.2 .h文件](#4.2 .h文件)
    • [4.3 .cpp文件](#4.3 .cpp文件)
  • 5、总结

1、前言

|------------------------------------------------|
| 记录一下QCustomPlot绘制曲线的实现方法,方便自己回顾,也可以给有需要的人提供帮助。 |

2、下载 QCustomPlot 库

|---------------------|
| 先从官网下载QCustomPlot 库 |

QCustomPlot 库下载链接

|------------|
| 把下载好的压缩包解压 |

|-------------------|
| 进入解压后的压缩包,找到这两个文件 |

|--------------------|
| 把这两个文件复制粘贴到项目同级目录下 |

3、在项目中使用QCustomPlot库

3.1 把 QCustomPlot 加入你的 .pro 文件

|----------------------|
| 把PrintSupport 模块添加进来 |

cpp 复制代码
QT       += core gui printsupport

|-------------------------|
| 把前面那两个文件添加到,pro文件中,然后构建 |

cpp 复制代码
SOURCES += \
    main.cpp \
    studyqcustomplot.cpp \
    qcustomplot.cpp 

HEADERS += \
    studyqcustomplot.h \
    qcustomplot.h 

FORMS += \
    studyqcustomplot.ui

3.2 UI 里放一个 Widget 并提升为 QCustomPlot

|------------------------------|
| 在Qt Designer(UI)中添加一个QWidget |

|-------------------|
| 右键这个QWidget,点击提升为 |

|----------------------|
| 输入QCustomPlot,接着点击添加 |

|------|
| 点击提升 |

|-------------------------------|
| 可以看到这个QWidget被提升为了QCustomPlot |

3.3 初始化 QCustomPlot

|-------|
| 添加头文件 |

|------|
| 绘制曲线 |

cpp 复制代码
// 生成 100 个 X/Y 点
QVector<double> x(100), y(100);
for (int i = 0; i < 100; ++i)
{
    x[i] = i;
    y[i] = qSin(i / 10.0);   // 画一条正弦曲线
}

// 添加一条曲线
ui->widget->addGraph();
ui->widget->graph(0)->setData(x, y);

// 设置坐标轴范围
ui->widget->xAxis->setRange(0, 100);
ui->widget->yAxis->setRange(-1, 1);

// 绘制
ui->widget->replot();

|------------|
| 如下图所示,成功绘制 |

4、项目文件

|-------------------------------|
| 为了方便大家参考,把.pro,.h,.cpp文件放在下面了 |

4.1 .pro文件

cpp 复制代码
QT       += core gui printsupport

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    studyqcustomplot.cpp \
    qcustomplot.cpp

HEADERS += \
    studyqcustomplot.h \
    qcustomplot.h

FORMS += \
    studyqcustomplot.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

4.2 .h文件

cpp 复制代码
#ifndef STUDYQCUSTOMPLOT_H
#define STUDYQCUSTOMPLOT_H

#include <QWidget>
#include <qcustomplot.h>

QT_BEGIN_NAMESPACE
namespace Ui {
class StudyQCustomPlot;
}
QT_END_NAMESPACE

class StudyQCustomPlot : public QWidget
{
    Q_OBJECT

public:
    StudyQCustomPlot(QWidget *parent = nullptr);
    ~StudyQCustomPlot();

private:
    Ui::StudyQCustomPlot *ui;
};
#endif // STUDYQCUSTOMPLOT_H

4.3 .cpp文件

cpp 复制代码
#include "studyqcustomplot.h"
#include "ui_studyqcustomplot.h"

StudyQCustomPlot::StudyQCustomPlot(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::StudyQCustomPlot)
{
    ui->setupUi(this);

    // 生成 100 个 X/Y 点
    QVector<double> x(100), y(100);
    for (int i = 0; i < 100; ++i)
    {
        x[i] = i;
        y[i] = qSin(i / 10.0);   // 画一条正弦曲线
    }

    // 添加一条曲线
    ui->widget->addGraph();
    ui->widget->graph(0)->setData(x, y);

    // 设置坐标轴范围
    ui->widget->xAxis->setRange(0, 100);
    ui->widget->yAxis->setRange(-1, 1);

    // 绘制
    ui->widget->replot();
}

StudyQCustomPlot::~StudyQCustomPlot()
{
    delete ui;
}

5、总结

|-----------------------------------------------------------------------------------------------------|
| 以上就是QCustomPlot绘制曲线的整个过程了,浏览过程中,如若发现错误,欢迎大家指正,有问题的可以评论区留言或者私信。最后,如果大家觉得有所帮助的话,可以点个赞,谢谢大家!祉猷并茂,顺遂无虞! |

相关推荐
火山灿火山5 小时前
Qt常用控件(五) - 多元素控件
开发语言·qt
Ivy_belief6 小时前
Linux:设置和获取单片机gpio引脚和key值
linux·arm开发·qt·gpio·event事件
神仙别闹7 小时前
基于QT(C++)实现B树可视化
c++·b树·qt
feiyangqingyun7 小时前
记一次Qt视频监控系统的优化/双击打开分组可能崩溃的BUG/排对打开通道过程中关闭通道可能崩溃的BUG
qt·音视频·qt监控系统·qt视频轮询
木心爱编程8 小时前
Qt C++ 插件开发指南:插件架构设计与动态加载实战
开发语言·c++·qt
木心爱编程9 小时前
Qt C++ + OpenCV 实战:从零搭建实时视频滤镜与图像识别系统
c++·qt·opencv
adsadswee17 小时前
Qt 样式与 QLinearGradient 渐变详解
开发语言·qt·qt样式表·qlineargradient·qss渐变效果
feiyangqingyun18 小时前
Qt优化onvif设备搜索/一键批量搜索/onvif设备模拟器/几千路并发/实时推流/虚拟监控摄像头
qt·onvif模拟器
wd_cloud19 小时前
QT/6.7.2/Creator编译Windows64 MySQL驱动
开发语言·qt·mysql