Qwt рдФрд░ Qt рдирд┐рд░реНрдорд╛рддрд╛ред рднрд╛рдЧ 3: рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рддрддреНрд╡ рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЧреНрд░рд╛рдл



рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ Qt Creator 3.0.0 (MinGW) рдФрд░ Qwt-6.1.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╛рдардХ рдХреЛ Qt рдХреНрд░рд┐рдПрдЯрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ "рд╕рд┐рдЧреНрдирд▓-рд╕реНрд▓реЙрдЯ" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдПред Qwt рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ 1 рдФрд░ рд╕рдВрдЦреНрдпрд╛ 2 рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреА рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ:

habrahabr.ru/post/211204
habrahabr.ru/post/211867

Qwt рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд╕рд░рд▓реАрдХрд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдкреНрд░рджрд░реНрд╢рди рддрддреНрд╡реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╕рдордиреНрд╡рдп рддрд░рд╛рдЬреВ, рдЧреНрд░рд┐рдб, рдбреЗрдЯрд╛ рдмреНрд░реЗрдб, рдЖрджрд┐ред рдЗрди рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЖрд▓реЗрдЦ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд┐рдЫрд▓реЗ рднрд╛рдЧреЛрдВ рдореЗрдВ, рдЧреНрд░рд╛рдлрд╝ рдирд┐рдпрдВрддреНрд░рдг рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝реЗ рдЧрдП рдереЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреНрдпреВрдЯреА рдХреНрд░рд┐рдПрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

рднрд╛рдЧ 3 рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗ:

тАв рдбрд┐рдЬрд╛рдЗрдирд░ рдлреЙрд░реНрдо рдореЗрдВ рдЧреНрд░рд╛рдл рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЬреЗрдЯ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдЖрдкрдХреЛ рдХреНрдпреВрдЯреА рдХреНрд░рд┐рдПрдЯрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛;
тАв рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╡рдХреНрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рдПрдХ рдЪрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдмреБрдирд┐рдпрд╛рджреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛: рдЪрд╛рд░реНрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдордиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдЗрд╕рдХрд╛ рдЕрдиреБрдорд╛рди / рдирд┐рд╖реНрдХрд╛рд╕рди, рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рдХрд░реНрд╕рд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛;
тАв рдбрд┐рдЬрд╛рдЗрдирд░ рдлреЙрд░реНрдо рдХреА рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдореЗрдВ рдХреНрд▓рд┐рдХ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ;
тАв Qt рдХреНрд░рд┐рдПрдЯрд░ рд╕реЗ рдорд╛рдирдХ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рд╡рдХреНрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред

рдЗрд╕ рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреБрдЫ рд╣рдж рддрдХ рднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ 2 рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЛрд╣рд░рд╛рддреА рд╣реИред рдпрд╣ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд▓реЗрдЦреЛрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдлрд╝реЙрд░реНрдо рдореЗрдВ рдЧреНрд░рд╛рдлрд╝ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЬреЗрдЯ рдЬреЛрдбрд╝реЗрдВ
1. рдореЗрдирд╡рд┐рдВрдбреЛ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдореБрдЭреЗ Qwt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рд╡рд╛рд░реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╛рдж рджрд┐рд▓рд╛рдПрдВ: рдкреНрд░реЛрдЬреЗрдХреНрдЯ .pro рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрди "CONFIG + = qwt" рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ qmake рдЪрд▓рд╛рдПрдВ (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ)ред

2. рдкреНрд░рдкрддреНрд░ рд╕рдВрдкрд╛рджрдХ рдЦреЛрд▓реЗрдВ рдФрд░ рд╡рд┐рдЬреЗрдЯ рд╡рд┐рдЬреЗрдЯ рдвреВрдВрдвреЗрдВред рд╣рдо рдЗрд╕реЗ рдлреЙрд░реНрдо рдкрд░ рд░рдЦрддреЗ рд╣реИрдВред


3. рдЬреЛрдбрд╝реЗ рдЧрдП "рд╡рд┐рдЬреЗрдЯ" рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ "Qwt_Widget" рдХрд░ рджреЗрдВред
4. "Qwt_Widget" рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ "Promote to ..." рдЪреБрдиреЗрдВ


5. рдкреНрд░рдЪрд╛рд░рд┐рдд рд╡рд░реНрдЧ рдирд╛рдо рдлрд╝реАрд▓реНрдб рдореЗрдВ, "QwtPlot" рд▓рд┐рдЦреЗрдВред рд╣реИрдбрд░ рдлрд╝рд╛рдЗрд▓ рдлрд╝реАрд▓реНрдб рдореЗрдВ, "qwtplot.h" рдХреЛ "qwt_plot.h" рдореЗрдВ рдмрджрд▓реЗрдВред рд╡рд┐рдВрдбреЛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдмрдВрдж рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред




рд╣рдо рдПрдХ рдбреЗрдореЛ рд╡рдХреНрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ, рдПрдХ рдЪрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдмреБрдирд┐рдпрд╛рджреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ
рдиреАрдЪреЗ рдПрдХ рдХреЛрдб рд╣реИ рдЬреЛ рдХрд╛рдлреА рд╣рдж рддрдХ рднрд╛рдЧ 2 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗ рд╕рдорд╛рди рд╣реИред рдХреЛрдб рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИ, рдирд┐рдпрдВрддреНрд░рдг рдХреЗ "рдореИрдиреБрдЕрд▓" рдЬреЛрдбрд╝ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЯреБрдХрдбрд╝реЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдВред рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдирд┐рдЬреА рдЪрд░ QwtPlot * d_plot рдмрдирд╛рдпрд╛, рдФрд░ рдлрд┐рд░ рдПрдХ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
d_plot->setTitle( "Qwt demonstration" ); 


рдЕрдм, рдЪрд╛рд░реНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
 ui->Qwt_Widget->setTitle( "Qwt demonstration" ); 


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдХреЛрдб рдореЗрдВ рдРрд╕реЗ рдирд┐рд░реНрдорд╛рдг рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИрдВ, рддреЛ Qwt_Widget рдЦрд╛рд▓реА рд╣реИред рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╡рд┐рдЬреЗрдЯ рдЧреНрд░рд╛рдл рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред

Mainwindow.h рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА
 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <qwt_plot.h> #include <qwt_plot_grid.h> #include <qwt_legend.h> #include <qwt_plot_curve.h> #include <qwt_symbol.h> #include <qwt_plot_magnifier.h> #include <qwt_plot_panner.h> #include <qwt_plot_picker.h> #include <qwt_picker_machine.h> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private Q_SLOTS: void click_on_canvas( const QPoint &pos ); private: Ui::MainWindow *ui; void addPlot(); void addPlotGrid(); QwtPlotCurve *curve; QPolygonF points; void addCurve(); void enableMagnifier(); void enableMovingOnPlot(); void enablePicker(); }; #endif // MAINWINDOW_H 



Mainwindow.cpp рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА
 #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //        addPlot(); //    addPlotGrid(); //  addCurve(); //   /  enableMagnifier(); //      enableMovingOnPlot(); //        //      enablePicker(); } MainWindow::~MainWindow() { delete ui; } void MainWindow::addPlot() { // #include <qwt_plot.h> ui->Qwt_Widget->setTitle( "Qwt demonstration" ); ui->Qwt_Widget->setCanvasBackground( Qt::white ); //    ui->Qwt_Widget->setAxisTitle(QwtPlot::yLeft, "Y"); ui->Qwt_Widget->setAxisTitle(QwtPlot::xBottom, "X"); ui->Qwt_Widget->insertLegend( new QwtLegend() ); } void MainWindow::addPlotGrid() { // #include <qwt_plot_grid.h> QwtPlotGrid *grid = new QwtPlotGrid(); grid->setMajorPen(QPen( Qt::gray, 2 )); //     grid->attach( ui->Qwt_Widget ); } void MainWindow::addCurve() { //#include <qwt_plot_curve.h> curve = new QwtPlotCurve(); curve->setTitle( "Demo Curve" ); curve->setPen( Qt::blue, 6 ); //     //   // #include <qwt_symbol.h> QwtSymbol *symbol = new QwtSymbol( QwtSymbol::Ellipse, QBrush( Qt::yellow ), QPen( Qt::red, 2 ), QSize( 8, 8 ) ); curve->setSymbol( symbol ); //       //     ,   //    for (int i = 0; i < 5; i++) { points << QPointF( 1.0 * i, 1.0 * i); //   } curve->setSamples( points ); //      curve->attach( ui->Qwt_Widget ); //     } void MainWindow::enableMagnifier() { // #include <qwt_plot_magnifier.h> QwtPlotMagnifier *magnifier = new QwtPlotMagnifier(ui->Qwt_Widget->canvas()); // ,  / magnifier->setMouseButton(Qt::MidButton); } void MainWindow::enableMovingOnPlot() { // #include <qwt_plot_panner.h> QwtPlotPanner *d_panner = new QwtPlotPanner( ui->Qwt_Widget->canvas() ); // ,   d_panner->setMouseButton( Qt::RightButton ); } void MainWindow::enablePicker() { // #include <qwt_plot_picker.h> //   QwtPlotPicker *d_picker = new QwtPlotPicker( QwtPlot::xBottom, QwtPlot::yLeft, //    QwtPlotPicker::CrossRubberBand, //    QwtPicker::AlwaysOn, //   ui->Qwt_Widget->canvas() ); //    //    d_picker->setRubberBandPen( QColor( Qt::red ) ); //     d_picker->setTrackerPen( QColor( Qt::black ) ); //     d_picker->setStateMachine( new QwtPickerDragPointMachine() ); } 


рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣рдореЗрдВ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рд╕реАрдзреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдХреИрдирд╡рд╛рд╕ рдХреЗ рдЖрдпрд╛рдо "Qwt_Widget" рдХреЗ рдЖрдпрд╛рдореЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлреЙрд░реНрдо рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред Qwt_Widget рдХреЗ рдЖрдпрд╛рдо, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрджрд▓реЗ рдЧрдП рд╣реИрдВред рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ "рд▓реЗрдЖрдЙрдЯ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдорд╛рдирдХ (рдердХрд╛ рд╣реБрдЖ рдФрд░ рдмрд╛рдПрдВ) рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред


рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдлреЙрд░реНрдо рдХреА рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдореЗрдВ рдХреНрд▓рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ
1. MainWow.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ MainWindow рд╡рд░реНрдЧ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ
 private Q_SLOTS: void click_on_canvas( const QPoint &pos ); 


рд╣рдо mainwindow.cpp рдореЗрдВ рд╕реНрд▓реЙрдЯ (рдлрд╝рдВрдХреНрд╢рди) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
 void MainWindow::click_on_canvas( const QPoint &pos ) { //     double x = ui->Qwt_Widget->invTransform(QwtPlot::xBottom, pos.x()); double y = ui->Qwt_Widget->invTransform(QwtPlot::yLeft, pos.y()); statusBar()->showMessage("x= " + QString::number(x) + "; y = " + QString::number(y)); } 


рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдХреЛ EnablePicker () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
  connect( d_picker, SIGNAL( appended( const QPoint & ) ), SLOT( click_on_canvas( const QPoint & ) ) ); 


рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдХреЛрдИ рдореЗрди_рд╡рд┐рдВрдбреЛ рд╡рд░реНрдЧ рдХреЗ рдирд┐рдЬреА рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ d_picker рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рд╕рд┐рдЧреНрдирд▓-рд╕реНрд▓реЙрдЯ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред


рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рд╡рдХреНрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ
рдпрд╣рд╛рдБ, рдЬрдм рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ "рд╡рд┐рдЬреЗрдЯ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рдкрд░рд┐рдЪрд┐рдд рд╣реИ:
1. рдкреНрд░рдкрддреНрд░ рдореЗрдВ "рдбрдмрд▓ рд╕реНрдкрд┐рди рдмреЙрдХреНрд╕" рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ "changeXSpinBox" рдХрд╛ рдирд╛рдо рджреЗрдВред
2. рдкреНрд░рдкрддреНрд░ рдореЗрдВ "PushButton" рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ "MoveByXButton" рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред "рдПрдХреНрд╕ рдмрджрд▓реЗрдВ" рдмрдЯрди рдкрд░ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдмрджрд▓реЗрдВред
3. "MoveByXButton" рдХреЗ рд▓рд┐рдП, "рд╕реНрд▓реЙрдЯ рдкрд░ рдЬрд╛рдПрдВ" -> рдХреНрд▓рд┐рдХ рдХреА рдЧрдИ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред
4. рд╕рдорд╛рд░реЛрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 void MainWindow::on_moveByXButton_clicked() { double x = 0.0; //   ','  '.'  ,  //  spinBox      double QString spinBoxText = ui->changeXSpinBox->text().replace( QLocale().decimalPoint(), QLatin1Char('.')); double xChangeValue = spinBoxText.toDouble(); for (int i = 0; i <points.size(); i++) { x = points[i].x(); points[i].setX(x + xChangeValue); } curve->setSamples(points); ui->Qwt_Widget->replot(); } 



рдирд┐рд╖реНрдХрд░реНрд╖: рд╣рдордиреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдФрд░ рдЗрд╕рдХреЗ рдбреЗрдореЛ рдХрдВрдЯреНрд░реЛрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреВрдЯреА рдХреНрд░рд┐рдПрдЯрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреВрд▓ рдХрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рд╕реНрдкрд┐рдирдмреЙрдХреНрд╕ рдФрд░ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рд╡рдХреНрд░ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ x рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рднрд╛рдЧ 4 рдореЗрдВ, рд╣рдо рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдмрдврд╝рд╛рдиреЗ / рдШрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдорд╛рдЙрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдЧреНрд░рд╛рдлрд╝ рдФрд░ рдШрдЯрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрди рдЙрдкрдХрд░рдг, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЧреНрд░рд╛рдлрд╝ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

рдкреБрдирд╢реНрдЪ I рдореИрдВ рд▓реЗрдЦ рдирдВрдмрд░ 1 рдФрд░ рдирдВрдмрд░ 2 рдкрд░ рдореВрд▓реНрдпрд╡рд╛рди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд░рд┐рдЯреЗрдЪ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЧрд╣рд░реА рдХреГрддрдЬреНрдЮрддрд╛ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реВрдВ , рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред

рд╕рдВрджрд░реНрдн:

рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ:
github.com/VladimirSap/Qwt_Tutorial

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдВрд╕рд╛рдзрди:
qwt.sourceforge.net

Qwt рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╕рдВрдЧреНрд░рд╣:
www.qtcentre.org/archive/index.php/f-23.html

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд┐рдХрд▓реНрдк, Qwt рдХрд╛ рд╡рд┐рдХрд▓реНрдк (рдзрдиреНрдпрд╡рд╛рдж, GoRRoo )
www.qcustomplot.com

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдВрдХ:
рднрд╛рдЧ 1: habrahabr.ru/post/211204
рднрд╛рдЧ 2: habrahabr.ru/post/211867

Source: https://habr.com/ru/post/In212137/


All Articles