#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include #include #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // Создать поле со шкалами для отображения графика // (this) - разместить поле на текущем окне // #include QwtPlot* d_plot = new QwtPlot( this ); setCentralWidget(d_plot); // привязать поле к границам окна d_plot->setTitle( "График функции" ); // заголовок d_plot->setCanvasBackground( Qt::white ); // цвет фона // Параметры осей координат d_plot->setAxisTitle(QwtPlot::yLeft, "Y"); d_plot->setAxisTitle(QwtPlot::xBottom, "X"); d_plot->insertLegend( new QwtLegend() ); // Включить сетку // #include QwtPlotGrid *grid = new QwtPlotGrid(); // grid->setMajorPen(QPen( Qt::gray, 2 )); // цвет линий и толщина grid->attach( d_plot ); // добавить сетку к полю графика // Кривая //#include QwtPlotCurve *curve = new QwtPlotCurve; curve->setTitle( "Y(X)" ); curve->setPen( Qt::blue, 6 ); // цвет и толщина кривой curve->setRenderHint ( QwtPlotItem::RenderAntialiased, true ); // сглаживание // Маркеры кривой // #include QwtSymbol *symbol = new QwtSymbol( QwtSymbol::Ellipse, QBrush( Qt::yellow ), QPen( Qt::red, 2 ), QSize( 8, 8 ) ); curve->setSymbol( symbol ); //Расчет точек графика и их добавление к кривой const int N=30; QVector* vector = new QVector; qreal x[N],y[N]; for(int k=0;kappend(QPointF(x[k],y[k])); } curve->setSamples(*vector); // ассоциировать набор точек с кривой curve->attach(d_plot); // отобразить кривую на графике d_plot->replot(); // Принудительная установка пределов осей // d_plot->setAxisScale(QwtPlot::xBottom, 0, 10); // Включить возможность приближения/удаления графика // #include QwtPlotMagnifier *magnifier = new QwtPlotMagnifier(d_plot->canvas()); // клавиша, активирующая приближение/удаление magnifier->setMouseButton(Qt::MidButton); // Включить возможность перемещения по графику // #include QwtPlotPanner *d_panner = new QwtPlotPanner( d_plot->canvas() ); // клавиша, активирующая перемещение d_panner->setMouseButton( Qt::RightButton ); // Включить отображение координат курсора и двух перпендикулярных // линий в месте его отображения // #include // настройка функций QwtPlotPicker *d_picker = new QwtPlotPicker( QwtPlot::xBottom, QwtPlot::yLeft, // ассоциация с осями QwtPlotPicker::CrossRubberBand, // стиль перпендикулярных линий QwtPicker::ActiveOnly, // включение/выключение d_plot->canvas() ); // ассоциация с полем // Цвет перпендикулярных линий d_picker->setRubberBandPen( QColor( Qt::red ) ); // цвет координат положения указателя d_picker->setTrackerPen( QColor( Qt::black ) ); // непосредственное включение вышеописанных функций d_picker->setStateMachine( new QwtPickerDragPointMachine() ); } MainWindow::~MainWindow() { delete ui; }