首页 > 编程语言 >【QCustomPlot】使用方法(源码方式)

【QCustomPlot】使用方法(源码方式)

时间:2023-06-18 18:55:04浏览次数:62  
标签:文件 qcustomplot MainWindow 源码 ui QCustomPlot 方法 mainwindow

说明

使用 QCustomPlot 绘图库辅助开发时整理的学习笔记。同系列文章目录可见 《绘图库 QCustomPlot 学习笔记》目录。本篇介绍 QCustomPlot 的一种使用方法,通过包含源码的方式进行使用,这也是最常用的方法,示例中使用的 QCustomPlot 版本为 Version 2.1.1

目录


1. 下载源码

详见本人另一篇博客 【QCustomPlot】下载,使用时,只需要 qcustomplot.hqcustomplot.cpp 两个文件。官网 - QCustomPlot - SettingUp 有对 QCustomPlot 的使用方法做介绍。

2. 使用方法

2.1 将源文件添加进项目

qcustomplot.hqcustomplot.cpp 两个文件放在项目路径下,然后右键 项目名 -> 添加现有文件...,选择 qcustomplot.hqcustomplot.cpp

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

2.2 修改 .pro 工程文件

由于 QCustomPlot 具有导出 PDF 的功能,使用到了 printsupport 模块,因此需要在 .pro 工程文件中添加这一模块,如下所示,注意前面的版本条件。

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

2.3 将 QWidget 提升为 QCustomPlot

在设计界面中,右键某个 QWidget 控件,点击 提升为...

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

在弹出的对话框中,先在 ”提升的类名称“ 一栏写上 QCustomPlot,注意大小写要完全一致,然后点击 添加 按钮,最后点击 提升 按钮。

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

至此,这个 QWidget 控件就被提升为了 QCustomPlot 控件,可以进行绘图了。

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

2.4 绘制图像

完成以上几步后,点击左下方的绿色三角,运行项目,会得到一个空的坐标轴,如下所示:

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

在这个区域内,可以使用 QCustomPlot 提供的方法绘制函数曲线图、参数曲线图、柱状图、箱线图、热力图等,详见帮助文档,或本人同系列博客。这里提供一个示例,在合适的地方添加如下代码:

QVector<double> x = {0,1,2,3,4,5,6,7,8,9};
QVector<double> y = {0,2,4,9,16,25,36,49,64,81};
ui->widget->addGraph();
ui->widget->graph(0)->setData(x, y);
ui->widget->graph(0)->rescaleAxes();
ui->widget->replot();

再次点击左下方的绿色三角,运行项目,会得到以下曲线图:

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

3. 示例工程源码

3.1 文件 demoQCP.pro

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
TARGET = demoQCP
TEMPLATE = app

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

HEADERS += \
        mainwindow.h \
        qcustomplot.h

FORMS += \
        mainwindow.ui

3.2 文件 main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

3.3 文件 mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

3.4 文件 mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

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

    // 绘图代码
    QVector<double> x = {0,1,2,3,4,5,6,7,8,9};
    QVector<double> y = {0,2,4,9,16,25,36,49,64,81};
    ui->widget->addGraph();
    ui->widget->graph(0)->setData(x, y);
    ui->widget->graph(0)->rescaleAxes();
    ui->widget->replot();
}

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

3.5 其他文件

除以上四个文件外,还剩三个文件:mainwindow.uiqcustomplot.hqcustomplot.cpp。其中 mainwindow.ui 是 Qt Creator 生成的默认 UI 文件,界面中只多了一个提升后的 QCustomPlot 控件,可使用同样步骤再次生成。qcustomplot.hqcustomplot.cpp 即是下载所得的两个文件。

标签:文件,qcustomplot,MainWindow,源码,ui,QCustomPlot,方法,mainwindow
From: https://www.cnblogs.com/young520/p/17489580.html

相关文章

  • 杰森气象——实况天气小程序(内附完整源码)
    项目介绍当今社会,天气的变化对我们的生活产生着越来越大的影响。为了更好地了解天气状况,越来越多的人开始使用天气查询小程序。今天,介绍的是一款实用的天气查询小程序——杰森气象。杰森气象是一款功能强大的天气查询小程序,它可以帮助我们随时了解天气状况,包括实时天气、预警信息、......
  • 快速查看日志的方法
    快速查看日志的方法摘要本文主要是仿写自:https://www.cnblogs.com/codelogs/p/16410363.html原创:扣钉日记(微信公众号ID:codelogs)感觉公众号作者的文章挺好的.周末在家看了一些,感觉很有收获的确能够解决自己遇到的一些问题但是感觉早上六点多看完,到了中午就忘记的差不......
  • 2023-06-18《计算方法》- 陈丽娟 - 方程的近似解法.md
    2023-06-18《计算方法》-陈丽娟-方程的近似解法Matlab计算方法二分法迭代法牛顿法在这里我先跳过了曲线拟合这一部分,这是因为我主要想快速切入到数值微积分部分,因此直接直接来到了方程的近似解部分。一、二分法二分法对如下问题进行求解:设在区间上连续,且,求使得.这里给......
  • python下载文件的三种方法
    Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块,此外Python还提供了另外一种方法requests。下面来看看三种方法是如何来下载文件的:方法一:importurllibprint("downloadingwithurllib")url='http://download.redis.io/releases......
  • [转]docker 添加国内镜像源以及命令查询镜像版本tag方法
    文章地址:DockerHub镜像源-掘金docker如何查询镜像版本信息_docker_脚本之家(1条消息)查看dockersearch之后的所有镜像分支版本_dockersearch版本_登云时刻的博客-CSDN博客修改配置修改daemon.json,增加或者修改以下配置: json复制代码{"registry-mirrors......
  • 多个物理磁盘挂载到同一目录的方法 (lvm 软raid)
    多个物理磁盘挂载到同一目录的方法(lvm软raid)背景公司里面的一台申威3231的机器因为这个机器的raid卡没有操作界面.所以只能够通过命令行方式创建raid自己这一块比较菜,想着先尝试使用lvm的方式进行软raid挂载,也验证一下性能.所以写一些这个文章简单的结论虽然lv......
  • 多线程开启gprof性能测试的简易方法
    用到gprof时才知道,原来gprof只能对主线程统计耗时。manual上也没写线程相关的问题啊?不过有现成的解决方案:http://sam.zoy.org/writings/programming/gprof.html该方案封装了pthread_create(),让线程初始化执行一个setitimer(ITIMER_PROF,...)。简易的方法是直接在代码中写个setit......
  • 深度链接,深度思考——数字时代的笔记方法
    本文探讨了深度链接在知识管理和理解上的重要性。深度链接不仅允许我们直接回到原始的上下文进行重新思考,还可以在不同内容层次间灵活跳转和关联,从而更深入全面地理解一个主题。​文章首先对深度链接与转述进行了对比,指出虽然转述能够帮助我们用自己的话来理解和消化信息,但在处理......
  • 尚医通day13【预约挂号】(内附源码)
    页面预览预约挂号根据预约周期,展示可预约日期,根据有号、无号、约满等状态展示不同颜色,以示区分可预约最后一个日期为即将放号日期选择一个日期展示当天可预约列表预约确认第01章-预约挂号接口分析(1)根据预约周期,展示可预约日期数据(2)选择日期展示当天可预约列表1、......
  • nginx-clojure 源码构建一些问题
    因为nginx-clojure就是一个标准的nginx模块,一些是尝试基于源码进行构建发现一些问题的说明简单说明nginx当前1.25版本的构建是有问题的,1.24版本构建是可以的,1.23版本实际上官方已经提供了但是如果查看nginx官方文档会发现1.23版本的下载官方是似乎移除了,没直接提供了......