Qwt рдФрд░ Qt рдирд┐рд░реНрдорд╛рддрд╛ред рддреНрд╡рд░рд┐рдд рдФрд░ рдЖрд╕рд╛рдиред рднрд╛рдЧ 2: рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рддрддреНрд╡



рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ Qt Creator 3.0.0 (MinGW) рдФрд░ Qwt-6.1.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдардХ рдХреА рдЗрдЪреНрдЫрд╛:


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

рд▓реЗрдЦреЛрдВ рдХреЗ рдЪрдХреНрд░ (рдзреАрд░реЗ-рдзреАрд░реЗ рдмрдврд╝рддреЗ) рдХреЗ рднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ 1 рдореЗрдВ, рд╣рдо:
тАв рдХреНрдпреВрдЯреА рдХреНрд░рд┐рдПрдЯрд░ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рдХреНрдпреВрдбрдмреНрд▓реНрдпреВрдЯреА;
тАв рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдпрд╛;
тАв рд╕рдорд╛рдпреЛрдЬрд┐рдд рд╕рдордиреНрд╡рд┐рдд рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ;
тАв рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдкреИрдорд╛рдиреЗ (рдЬрд╝реВрдо рдЗрди / рдЖрдЙрдЯ) рдХреЛ рдмрджрд▓реЗрдВ;
тАв рдЧреНрд░рд╛рдл рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛;
тАв рдорд╛рдЙрд╕ рдХреЗ рдХреНрд▓рд┐рдХ рдкрд░ рдХрд░реНрд╕рд░ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ 2 рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
тАв рдПрдХ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдЬреЛрдбрд╝реЗрдВ;
тАв рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдВ рдХреНрд▓рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ;
тАв рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЯрди рдЬреЛрдбрд╝реЗрдВ;
тАв рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдореЗрдВ QwtCounter рдЬреЛрдбрд╝реЗрдВ (рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб, рдЬрд┐рд╕рдХрд╛ рдорд╛рди рддреАрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ)ред
тАв QwtCounter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреНрд░рд╛рдл x рдХреА рдСрдлрд╕реЗрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ;
тАв рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╣рдо рдЧреНрд░рд╛рдл рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореВрд▓реНрдп x рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдВрдЧреЗред

рдиреЛрдЯ: рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝рддреЗ рд╕рдордп, GUI рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рддреИрдпрд╛рд░реА: рд▓реЗрдЦ рд╕рдВрдЦреНрдпрд╛ 1 рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреЛрдб рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдирд╛
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЗрдирд╡рд┐рдВрдбреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдм рд╣рдо рдХреЛрдб рдХреЛ рдлрдВрдХреНрд╢рдиреНрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд╣реИ: рдЕрдЧрд░ рдкрд╣рд▓реЗ рд╣рдордиреЗ рд╕реАрдзреЗ рд╡рдХреНрд░ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд▓рд┐рдЦреЗ рдереЗ, рддреЛ рдЕрдм рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рд░рдгреА рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ (рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ)ред
рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдпрджрд┐ рдЖрдк рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ .pro рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ
CONFIG += qwt 
рдФрд░ рдлрд┐рд░ qmake рдЪрд▓рд╛рдПрдВред

рдпрд╣рд╛рдБ 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: Ui::MainWindow *ui; QwtPlot *d_plot; void setPlot(); QwtPlotGrid *grid; void setPlotGrid(); QwtPlotCurve *curve; QwtSymbol *symbol; void setCurveParameters(); //     double pointArray[5][2]; QPolygonF points; void addPointsToCurveAndShow(); QwtPlotMagnifier *magnifier; void enableMagnifier(); QwtPlotPanner *d_panner; void enableMovingOnPlot(); QwtPlotPicker *d_picker; 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); //        setPlot(); //    setPlotGrid(); //  setCurveParameters(); addPointsToCurveAndShow(); //   /  enableMagnifier(); //      enableMovingOnPlot(); //        //      enablePicker(); } void MainWindow::setPlot() { // (this) -      // #include <qwt_plot.h> d_plot = new QwtPlot( this ); setCentralWidget(d_plot); //      d_plot->setTitle( "Qwt demonstration" ); //  d_plot->setCanvasBackground( Qt::white ); //   //    d_plot->setAxisTitle(QwtPlot::yLeft, "Y"); d_plot->setAxisTitle(QwtPlot::xBottom, "X"); d_plot->insertLegend( new QwtLegend() ); } void MainWindow::setPlotGrid() { // #include <qwt_plot_grid.h> grid = new QwtPlotGrid(); grid->setMajorPen(QPen( Qt::gray, 2 )); //     grid->attach( d_plot ); //      } void MainWindow::setCurveParameters() { //#include <qwt_plot_curve.h> curve = new QwtPlotCurve(); curve->setTitle( "Demo Curve" ); curve->setPen( Qt::blue, 6 ); //     curve->setRenderHint ( QwtPlotItem::RenderAntialiased, true ); //  //   // #include <qwt_symbol.h> symbol = new QwtSymbol( QwtSymbol::Ellipse, QBrush( Qt::yellow ), QPen( Qt::red, 2 ), QSize( 8, 8 ) ); curve->setSymbol( symbol ); } void MainWindow::addPointsToCurveAndShow() { //       //     ,   //    for (int i = 0; i < 5; i++) { pointArray[i][0] = 1.0 + 0.5*i; pointArray[i][1] = 1.0 + 0.5*i; points << QPointF( pointArray[i][0], pointArray[i][1]); } curve->setSamples( points ); //      curve->attach( d_plot ); //     } void MainWindow::enableMagnifier() { // #include <qwt_plot_magnifier.h> magnifier = new QwtPlotMagnifier(d_plot->canvas()); // ,  / magnifier->setMouseButton(Qt::MidButton); } void MainWindow::enableMovingOnPlot() { // #include <qwt_plot_panner.h> d_panner = new QwtPlotPanner( d_plot->canvas() ); // ,   d_panner->setMouseButton( Qt::RightButton ); } void MainWindow::enablePicker() { // #include <qwt_plot_picker.h> //   d_picker = new QwtPlotPicker( QwtPlot::xBottom, QwtPlot::yLeft, //    QwtPlotPicker::CrossRubberBand, //    QwtPicker::AlwaysOn, //   d_plot->canvas() ); //    //    d_picker->setRubberBandPen( QColor( Qt::red ) ); //     d_picker->setTrackerPen( QColor( Qt::black ) ); //     d_picker->setStateMachine( new QwtPickerDragPointMachine() ); } MainWindow::~MainWindow() { delete ui; } 




рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдЬреЛрдбрд╝реЗрдВ
рд╣рдо рдореБрдЦреНрдп рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
 void setStatusBar(); 


рдХреЛрдб рдХреЛ mainwindow.cpp рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ

 void MainWindow::setStatusBar() { #ifndef QT_NO_STATUSBAR ( void )statusBar(); #endif } 


рд╣рдо рдореЗрдирд╡реЙрдиреНрдбрд░ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:
 setStatusBar(); 



рдЪрд░реЛрдВ рдореЗрдВ рдХреНрд▓рд┐рдХ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ
рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдорд╛рдЙрд╕ рдХреЛ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рджреЛрдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд░реНрд╕рд░ (рднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ 1 рдХреЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕реБрдзрд╛рд░) рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред
рдПрдХ рдХреНрд▓рд┐рдХ рдПрдХ рдШрдЯрдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕реНрд▓реЙрдЯ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдЗрд╕ рдШрдЯрдирд╛ (рд╕рд┐рдЧреНрдирд▓) рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред Mainwindow.h рдореЗрдВ, рдПрдХ рдирдпрд╛ рдирд┐рдЬреА рдЕрдиреБрднрд╛рдЧ рдФрд░ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

 private Q_SLOTS: void click_on_canvas( const QPoint &pos ); 


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


рдореЗрдирд╡рд┐рдВрдбреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рд╕рд┐рдЧреНрдирд▓-рдЯреВ-рд╕реНрд▓реЙрдЯ рдЬреЛрдбрд╝реА рдмрдирд╛рдПрдВред
 //     d_picker,    d_plot! connect( d_picker, SIGNAL( appended( const QPoint & ) ), SLOT( click_on_canvas( const QPoint & ) ) ); 


рд╣рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдХрд╣реАрдВ рднреА рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ (рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рдирд┐рдЪрд▓рд╛ рднрд╛рдЧ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ):


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭ рдЪреБрдХреЗ рд╣реИрдВ, рдбрдмрд▓ рдЪрд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдмрдирд╛рдПрдБ
Mainwindow.h рдореЗрдВ рдПрдХ рдирд┐рдЬреА рдЪрд░ рдЬреЛрдбрд╝реЗрдВ
 QToolBar *toolBar; 

рд╣рдо рдореБрдЦреНрдп рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
 void setToolBar (); 

рдХреЛрдб рдХреЛ mainwindow.cpp рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
 void MainWindow::setToolBar() { toolBar = new QToolBar( this ); addToolBar( toolBar ); } 

рд╣рдо рдореЗрдирд╡реЙрдиреНрдбрд░ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:
 setToolBar(); 

рдкрд░рд┐рдгрд╛рдо: рдКрдкрд░реА рднрд╛рдЧ рдореЗрдВ рдПрдХ рдкрддрд▓реА рдкрдЯреНрдЯреА рджрд┐рдЦрд╛рдИ рджреА - рдПрдХ рдЯреВрд▓рдмрд╛рд░
(рдЬрдмрдХрд┐ рдЦрд╛рд▓реА)ред


рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдореЗрдВ рдПрдХ рдмрдЯрди рдЬреЛрдбрд╝реЗрдВ
Mainwindow.h рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЬреЛрдбрд╝реЗрдВ:
 #include <QToolButton> 

рдореБрдЦреНрдп рдЪрд░ рдореЗрдВ рдирд┐рдЬреА рдЪрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдПрдХ рдирд┐рдЬреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдлрд╝рдВрдХреНрд╢рди:
 QToolButton *toolButton; void addCorrectionButton(); 


рдХреЛрдб рдХреЛ mainwindow.cpp рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
 void MainWindow::addCorrectionButton() { toolButton = new QToolButton( toolBar ); toolButton->setText( "Change x" ); toolButton->setCheckable( true ); toolBar->addWidget( toolButton ); //      } 

рд╣рдо рдореЗрдирд╡реЙрдиреНрдбрд░ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:
 addCorrectionButton(); 




рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдореЗрдВ QwtCounter рдЬреЛрдбрд╝реЗрдВ
Mainwindow.h рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЬреЛрдбрд╝реЗрдВ:
 #include <QHBoxLayout> #include <qwt_counter.h> 


рдореБрдЦреНрдп рдЪрд░ рдореЗрдВ рдирд┐рдЬреА рдЪрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдПрдХ рдирд┐рдЬреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдлрд╝рдВрдХреНрд╢рди:
 QWidget *hBox; QHBoxLayout *layout; QwtCounter *cntDamp; void addQwtCounter(); 

рдХреЛрдб рдХреЛ mainwindow.cpp рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
 void MainWindow::addQwtCounter() { //     cntDamp = new QwtCounter(); cntDamp->setRange( -50, 50 ); //        //          cntDamp->setSingleStep( 1.0 ); cntDamp->setValue( 0 ); //   cntDamp->setEnabled(true); //      //   hBox = new QWidget(); // "",      //     QWidget. layout = new QHBoxLayout( hBox ); //      layout->addWidget(cntDamp); //           layout->addWidget( new QWidget(hBox) , 10 ); // spacer //        ( void )toolBar->addWidget( hBox ); } 


рд╣рдо рдореЗрдирд╡реЙрдиреНрдбрд░ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:
 addQwtCounter(); 

рдкрд░рд┐рдгрд╛рдо:



рдЧреНрд░рд╛рдлрд╝ рдСрдлрд╝рд╕реЗрдЯ x рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП QwtCounter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
Mainwindow.h рдореЗрдВ, рдирд┐рдЬреА Q_SLOTS рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдПрдХ рдФрд░ рд╕реНрд▓реЙрдЯ рдЬреЛрдбрд╝реЗрдВ:
 void setPlotCorrection( double coeff ); 


Mainwindow.h рдореЗрдВ рдПрдХ рдирд┐рдЬреА рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:
 double changeXValue; 


рд╣рдо рдореЗрдирд╡рд┐рдВрдбреЛ.рд╡реИрдХ рдореЗрдВ рд╕реНрд▓реЙрдЯ (рдлрд╝рдВрдХреНрд╢рди) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
 void MainWindow::setPlotCorrection( double coeff ) { changeXValue = coeff; } 


рдореЗрдирд╡рд┐рдВрдбреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдЬреЛрдбрд╝реЗ рдЧрдП рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ рдФрд░ рд╕рд┐рдЧреНрдирд▓-рд╕реНрд▓реЙрдЯ рдкреЗрдпрд░ рдмрдирд╛рдПрдВ:
 changeXValue = 0.0; connect( cntDamp, SIGNAL( valueChanged( double ) ), SLOT( setPlotCorrection( double ) ) ); 



рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореВрд▓реНрдп x рджреНрд╡рд╛рд░рд╛ рдЧреНрд░рд╛рдл рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдВрдЧреЗ
Mainwindow.h рдореЗрдВ, рдирд┐рдЬреА Q_SLOTS рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдПрдХ рдФрд░ рд╕реНрд▓реЙрдЯ рдЬреЛрдбрд╝реЗрдВ:
 void changeX(); 

рд╣рдо mainwindow.cpp рдореЗрдВ рд╕реНрд▓реЙрдЯ (рдлрд╝рдВрдХреНрд╢рди) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
 void MainWindow::changeX() { //    points.clear(); for (int i = 0; i < 5; i++) { pointArray[i][0] += changeXValue; points << QPointF( pointArray[i][0], pointArray[i][1]); } curve->setSamples( points ); //      d_plot->replot(); } 


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

рдореЗрдирд╡рд┐рдВрдбреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рд╕рд┐рдЧреНрдирд▓-рд╕реНрд▓реЙрдЯ рдЬреЛрдбрд╝реА рдмрдирд╛рдПрдВ:
 connect( toolButton, SIGNAL(toggled(bool)), SLOT( changeX() ) ); 


рдиреЛрдЯ: рдмрдЯрди рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд┐рддрд┐ рд╣реИрдВ (рджрдмрд╛рдпрд╛ / рджрдмрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ), рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд░рд╛рдЬреНрдп рдХреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдирд┐рдЧрд░рд╛рдиреА рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред


рдкрд░рд┐рдгрд╛рдо рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдПрдВред рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рддреАрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдмрдЯрди рджрдмрд╛рдПрдВред рдЧреНрд░рд╛рдл рдХреЛ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░рд╛рд╢рд┐ рд╕реЗ рдкреВрд░реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖:
рдпрд╣ рдЖрд▓реЗрдЦ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдореИрдиреБрдЕрд▓ рдХреЛрдбрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ GUI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдпрд╣ рдореЗрд░реЗ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдЧрд╛ред


рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

PS рдХреГрдкрдпрд╛ рд▓реЗрдЦ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдЫреЛрдбрд╝ рджреЗрдВред рдХреНрдпрд╛ рдЗрд╕реЗ рдкрдврд╝рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛? рд╢рд╛рдпрдж рд╕рд╛рдордЧреНрд░реА рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдмрджрд▓ рджреЗрдВ? рдХреИрд╕реЗ?

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

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдХрд░реЗрдВ: yadi.sk/d/TcMglWvAHWvxT

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

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

Qwt: habrahabr.ru/post/211204 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ 1

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

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


All Articles