Для начала подключим нужные файлы к проекту методом «Добавить существующие файлы …».
После чего добавим в pro файл:
QT += printsupport
printsupport — необходим для совместимости методов писаных в библиотеки QCustomPlot.
Иначе при компиляции получим кучу ошибок:
In function `ZN11QCustomPlot7savePdfERK7QStringiiN3QCP9ExportPenES2_S2_': ошибка: undefined reference to `_imp___ZN8QPrinterC1ENS_11PrinterModeE' ошибка: undefined reference to `_imp___ZN8QPrinter17setOutputFileNameERK7QString' ошибка: undefined reference to `_imp___ZN8QPrinter15setOutputFormatENS_12OutputFormatE' ошибка: undefined reference to `_imp___ZN8QPrinter12setColorModeENS_9ColorModeE' ошибка: undefined reference to `_imp___ZNK8QPrinter11printEngineEv' ошибка: undefined reference to `_imp___ZNK8QPrinter11printEngineEv' ошибка: undefined reference to `_imp___ZN8QPrinterD1Ev' ошибка: undefined reference to `_imp___ZN8QPrinterD1Ev'
printsupport — класс который позволяет сделать печать более простой и переносимой.
Далее преобразуем пустой Widget в QCustomPlot. Так же как для Qwt.
Меняем имя преобразованного класса на QCustomPlot и заголовочный файл на qcustomplot.h.
Перейдем к коду:
// Добавляем график
ui->widget->addGraph();
// Добавляем метки шкалы
ui->widget->xAxis->setLabel("x");
ui->widget->yAxis->setLabel("y");
// Добавляем отображаемый диапазон
ui->widget->xAxis->setRange(0, 1000);
ui->widget->yAxis->setRange(0, 1000);
// Помещаем точки отображения
ui->widget->graph(0)->setLineStyle(QCPGraph::lsLine);
ui->widget->graph(0)->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssDisc, 5));
// Заполняем значения
x << 0 << 100 << 200 << 300 << 400 << 500 << 600;
y << 50 << 150 << 250 << 350 << 450 << 550 << 650;
// Добавляем данные на график
ui->widget->graph(0)->setData(x, y);
// Обновляем график
ui->widget->replot();
Полный листинг:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
QVector<double> x,y;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// Добавляем график
ui->widget->addGraph();
// Добавляем метки шкалы
ui->widget->xAxis->setLabel("x");
ui->widget->yAxis->setLabel("y");
// Добавляем отображаемый диапазон
ui->widget->xAxis->setRange(0, 1000);
ui->widget->yAxis->setRange(0, 1000);
// Помещаем точки отображения
ui->widget->graph(0)->setLineStyle(QCPGraph::lsLine);
ui->widget->graph(0)->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssDisc, 5));
// Заполняем значения
x << 0 << 100 << 200 << 300 << 400 << 500 << 600;
y << 50 << 150 << 250 << 350 << 450 << 550 << 650;
// Добавляем данные на график
ui->widget->graph(0)->setData(x, y);
// Обновляем график
ui->widget->replot();
}
MainWindow::~MainWindow()
{
delete ui;
}
Получим следующее:

