Для примера постоим самый простой график в виде линии.
Сначала подключим нужные заголовочные файлы:
#include <qwt/qwt_plot_curve.h> #include <qwt/qwt_plot_grid.h> #include <qwt/qwt_symbol.h>
Добавим сетку:
grid = new QwtPlotGrid; grid->enableXMin(true); grid->enableYMin(true); grid->setMajorPen(QPen(Qt::black,1,Qt::DotLine)); grid->setMinorPen(QPen(Qt::gray,1,Qt::DotLine)); grid->attach(ui->widget);
Определим сам график для прорисовки:
curv = new QwtPlotCurve(QString()); curv->setRenderHint(QwtPlotItem::RenderAntialiased,true); curv->setPen(QPen(Qt::red));
Добавим маркеры, которые указывают заданные точки:
QwtSymbol *symbol = new QwtSymbol(); symbol->setStyle(QwtSymbol::Ellipse); symbol->setPen(QColor(Qt::black)); symbol->setSize(5); curv->setSymbol(symbol);
Зададим переменные:
x << 0 << 100 << 200 << 300 << 400 << 500 << 600; y << 50 << 150 << 250 << 350 << 450 << 550 << 650;
Перенесем заданные точки на график:
curv->setSamples(x,y); curv->attach(ui->widget); ui->widget->replot();
Получилось следующее:
Полный листинг:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <qwt/qwt_plot_curve.h> #include <qwt/qwt_plot_grid.h> #include <qwt/qwt_symbol.h> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; QwtPlotCurve *curv; QwtPlotGrid *grid; QVector<double> x; QVector<double> y; }; #endif // MAINWINDOW_H
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); grid = new QwtPlotGrid; grid->enableXMin(true); grid->enableYMin(true); grid->setMajorPen(QPen(Qt::black,1,Qt::DotLine)); grid->setMinorPen(QPen(Qt::gray,1,Qt::DotLine)); grid->attach(ui->widget); curv = new QwtPlotCurve(QString()); curv->setRenderHint(QwtPlotItem::RenderAntialiased,true); curv->setPen(QPen(Qt::red)); QwtSymbol *symbol = new QwtSymbol(); symbol->setStyle(QwtSymbol::Ellipse); symbol->setPen(QColor(Qt::black)); symbol->setSize(5); curv->setSymbol(symbol); x << 0 << 100 << 200 << 300 << 400 << 500 << 600; y << 50 << 150 << 250 << 350 << 450 << 550 << 650; curv->setSamples(x,y); curv->attach(ui->widget); ui->widget->replot(); } MainWindow::~MainWindow() { delete ui; }