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

打印 上一主题 下一主题

主题 933|帖子 933|积分 2799

说明

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

目录


1. 下载源码

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

2.1 将源文件添加进项目

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

2.2 修改 .pro 工程文件

由于 QCustomPlot 具有导出 PDF 的功能,使用到了 printsupport 模块,因此需要在 .pro 工程文件中添加这一模块,如下所示,注意前面的版本条件。
  1. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
复制代码

2.3 将 QWidget 提升为 QCustomPlot

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

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

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

2.4 绘制图像

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

在这个区域内,可以使用 QCustomPlot 提供的方法绘制函数曲线图、参数曲线图、柱状图、箱线图、热力图等,详见帮助文档,或本人同系列博客。这里提供一个示例,在合适的地方添加如下代码:
  1. QVector<double> x = {0,1,2,3,4,5,6,7,8,9};
  2. QVector<double> y = {0,2,4,9,16,25,36,49,64,81};
  3. ui->widget->addGraph();
  4. ui->widget->graph(0)->setData(x, y);
  5. ui->widget->graph(0)->rescaleAxes();
  6. ui->widget->replot();
复制代码
再次点击左下方的绿色三角,运行项目,会得到以下曲线图:

3. 示例工程源码

3.1 文件 demoQCP.pro
  1. QT       += core gui
  2. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
  3. TARGET = demoQCP
  4. TEMPLATE = app
  5. SOURCES += \
  6.         main.cpp \
  7.         mainwindow.cpp \
  8.         qcustomplot.cpp
  9. HEADERS += \
  10.         mainwindow.h \
  11.         qcustomplot.h
  12. FORMS += \
  13.         mainwindow.ui
复制代码
3.2 文件 main.cpp
  1. #include "mainwindow.h"
  2. #include <QApplication>
  3. int main(int argc, char *argv[])
  4. {
  5.     QApplication a(argc, argv);
  6.     MainWindow w;
  7.     w.show();
  8.     return a.exec();
  9. }
复制代码
3.3 文件 mainwindow.h
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. namespace Ui {
  5. class MainWindow;
  6. }
  7. class MainWindow : public QMainWindow
  8. {
  9.     Q_OBJECT
  10. public:
  11.     explicit MainWindow(QWidget *parent = 0);
  12.     ~MainWindow();
  13. private:
  14.     Ui::MainWindow *ui;
  15. };
  16. #endif // MAINWINDOW_H
复制代码
3.4 文件 mainwindow.cpp
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent) :
  4.     QMainWindow(parent),
  5.     ui(new Ui::MainWindow)
  6. {
  7.     ui->setupUi(this);
  8.     // 绘图代码
  9.     QVector<double> x = {0,1,2,3,4,5,6,7,8,9};
  10.     QVector<double> y = {0,2,4,9,16,25,36,49,64,81};
  11.     ui->widget->addGraph();
  12.     ui->widget->graph(0)->setData(x, y);
  13.     ui->widget->graph(0)->rescaleAxes();
  14.     ui->widget->replot();
  15. }
  16. MainWindow::~MainWindow()
  17. {
  18.     delete ui;
  19. }
复制代码
3.5 其他文件

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表