Пример использование qwt

Автор: | 23 декабря, 2021

Для примера постоим самый простой график в виде линии.

Сначала подключим нужные заголовочные файлы:

#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();

Получилось следующее:

Exemple qwt

Полный листинг:

#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;
}