Для начала подключим нужные файлы к проекту методом «Добавить существующие файлы …».
После чего добавим в 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; }
Получим следующее: