【QCustomPlot】使用方法(原始碼方式)

2023-06-18 21:00:39

說明

使用 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

2.2 修改 .pro 工程檔案

由於 QCustomPlot 具有匯出 PDF 的功能,使用到了 printsupport 模組,因此需要在 .pro 工程檔案中新增這一模組,如下所示,注意前面的版本條件。

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

2.3 將 QWidget 提升為 QCustomPlot

在設計介面中,右鍵某個 QWidget 控制元件,點選 提升為...

在彈出的對話方塊中,先在 」提升的類名稱「 一欄寫上 QCustomPlot,注意大小寫要完全一致,然後點選 新增 按鈕,最後點選 提升 按鈕。

至此,這個 QWidget 控制元件就被提升為了 QCustomPlot 控制元件,可以進行繪圖了。

2.4 繪製影象

完成以上幾步後,點選左下方的綠色三角,執行專案,會得到一個空的座標軸,如下所示:

在這個區域內,可以使用 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();

再次點選左下方的綠色三角,執行專案,會得到以下曲線圖:

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 即是下載所得的兩個檔案。