码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【QCustomPlot】使用方法(源码方式)


    说明

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

    目录
    • 说明
    • 1. 下载源码
    • 2. 使用方法
      • 2.1 将源文件添加进项目
      • 2.2 修改 .pro 工程文件
      • 2.3 将 QWidget 提升为 QCustomPlot
      • 2.4 绘制图像
    • 3. 示例工程源码
      • 3.1 文件 demoQCP.pro
      • 3.2 文件 main.cpp
      • 3.3 文件 mainwindow.h
      • 3.4 文件 mainwindow.cpp
      • 3.5 其他文件


    1. 下载源码

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

    2. 使用方法

    2.1 将源文件添加进项目

    把 qcustomplot.h 与 qcustomplot.cpp 两个文件放在项目路径下,然后右键 项目名 -> 添加现有文件...,选择 qcustomplot.h 与 qcustomplot.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
    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
    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.ui、qcustomplot.h、qcustomplot.cpp。其中 mainwindow.ui 是 Qt Creator 生成的默认 UI 文件,界面中只多了一个提升后的 QCustomPlot 控件,可使用同样步骤再次生成。qcustomplot.h 与 qcustomplot.cpp 即是下载所得的两个文件。

  • 相关阅读:
    论<script> 标签可以直接写在 HTML 文件中的哪些位置?(可以将 <script> 标签直接插入到 HTML 文件的任何位置)
    DS18B20温度传感器使用介绍
    LeetCode 0891. 子序列宽度之和
    ubuntu右上角的网络连接图标消失解决办法
    【Spatial-Temporal Action Localization(一)】认识时空动作定位
    网络分析笔记01:pcapng格式的整体解包
    11. 查询人数及其所占的百分比
    Jenkins 安装 NodeJS 插件后无法识别Node环境:env node No such file or directory
    企业选择快鲸开源scrm系统的7大理由
    FPGA——SPI总线控制flash(1)(含代码)
  • 原文地址:https://www.cnblogs.com/young520/p/17489580.html
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号