Qt + OpenGl - рдореВрд▓ рдмрд╛рддреЗрдВред рднрд╛рдЧ 1

рдпрд╣ рд▓реЗрдЦ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд╣реИ, рдЬреЛ рдХрд┐ рдХреНрдпреВрдЯреА (C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рд░реВрдк рдореЗрдВ) + OpenGL (рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ) рд╕реАрдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП Qt + OpenGL рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдПрдХ рд╢реБрд░реБрдЖрдд рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
1) рдХреНрдпреВрдЯреА рдХреНрд░рд┐рдПрдЯрд░ (рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЕрдЪреНрдЫреЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдФрд░ рдЯрд┐рдкреНрд╕ рд╣реИрдВ)ред рдХреВрджрдиреЗ рдХреЗ рд▓рд┐рдП
2) doc.qt.nokia.com - рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ
3) doc.crossplatform.ru - рд░реВрд╕реА рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди
4) Qt рдФрд░ OpenGL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ
5) рд╕реАрдЦрдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдирджрд╛рд░ рд▓реЗрдЦ

рд╣рдо рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ
рдЪреВрдВрдХрд┐ рдпрд╣ рд▓реЗрдЦ рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛:
1) рдЖрд╡реЗрджрди рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ
2) рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреИрд╕реЗ рдЦреАрдВрдЪрдирд╛ рд╣реИ
3) рдорд╛рдЙрд╕ рдкреЙрдЗрдВрдЯрд░ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ (рдХреАрдмреЛрд░реНрдб рдФрд░ рдорд╛рдЙрд╕ рдкрд░ рдХреАрд╕реНрдЯреНрд░реЛрдХ)
4) рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
5) рдЖрдЗрдП рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдмреИрдВрд▓ рдЧреЗрдо рдмрдирд╛рдПрдВред рдПрдХ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╡рд░реНрдЧ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред рд╕реВрдЪрдХ рдХреЗ рд╡рд░реНрдЧ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрд╛рдПрдВ рдорд╛рдЙрд╕ рдмрдЯрди рдХреЗ рд╕рд╛рде рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рд╡рд░реНрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ +1 рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред



рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ

рдЬрдм рдЖрдк Qt Creator рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдХреНрдпреВрдЯреА рд╡рд┐рдЬреЗрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ -> рдХреНрдпреВрдЯреА рдЬреАрдпреВрдЖрдИ рдЖрд╡реЗрджрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рд╡рд░реНрдЧ рд╕реВрдЪрдирд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдкреНрд░рдкрддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ рдХреЛ рдЕрдирдЪреЗрдХ рдХрд░реЗрдВред
рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдорд┐рд▓рддреА рд╣реИ:
opengl.pro - рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ
mainwindow.h - рд╕рднреА рд╡реИрд╢реНрд╡рд┐рдХ рдбреЗрдЯрд╛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
main.cpp
mainwindow.cpp - рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рддрд░реАрдХреЗ

рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛

рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА * .pro рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, Qt + = рд▓рд╛рдЗрди рдореЗрдВ рдЖрдкрдХреЛ opengl рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк opengl рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред

Mainwindow.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ - рдпрджрд┐ рдЖрдкрдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╛рдо рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
#include <QGLWidget> #include <QtOpenGL> #include <QTimer> 


рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЗ рдФрд░ рдЪрд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛

рдУрдкрди рдореЗрдирд╡рд┐рдВрдбреЛ.рдПрдЪ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдмрджрд▓реЗрдВ:
рдХреНрд▓рд╛рд╕ рдореЗрдирд╡рд┐рдВрдбреЛ: рдкрдмреНрд▓рд┐рдХ QMainWindow
рдкрд░
рдХреНрд▓рд╛рд╕ рдореЗрдирд╡рд┐рдВрдбреЛ: рдкрдмреНрд▓рд┐рдХ рдХреНрдпреВрдЧреНрд▓рд┐рдбрдЧреЗрдЯ
рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ QMainWindow рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рд╣реИред рд╣рдо opengl рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рд╣рдореЗрдВ QGLWidget рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдУрдкрдирдЧреНрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рдЕрдм рд╣рдо рдЪрд░ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ
 protected: int geese_size; //   int point; //   int gdx, gdy; //   int cax, cay, cbx, cby; //   (  (   )   ) int wax ,way; //     bool singling; //   ,  true      cax, cay, cbx, cby void self_cursor(); //      void initializeGL(); //    opengl void resizeGL(int nWidth, int nHeight); //        void paintGL(); //       void keyPressEvent(QKeyEvent *ke); //       void mouseMoveEvent(QMouseEvent *me); //     ,    setMouseTracking(false) void mousePressEvent(QMouseEvent *me); //      void mouseReleaseEvent(QMouseEvent *me); //    ""   void singling_lb(); //     void geese(); //         


рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрд▓реЙрдЯ рднреА рд╣реИ, рдЯрд╛рдЗрдорд░ рдкрд░ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рдХреЗ рдирдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

 protected slots: void geese_coord(); //    


рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд

QGLWidget рдХреЛ рдЗрддрдиреА рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рддрд░реАрдХреЗ рдХрд╣рддрд╛ рд╣реИ:
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░: initializeGL () -> resizeGL () -> рдкреЗрдВрдЯрдЧреЗрд▓ ()
рдПрдХ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддреЗ рд╕рдордп : resizeGL () -> рдкреЗрдВрдЯрдЧреЗрд▓ ()
updateGL () рдХреЙрд▓ рдкреЗрдВрдЯрдЬреАрдПрд▓ ()

initializeGL - рдХрд╛ рдЙрдкрдпреЛрдЧ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдлреНрд░реЗрдо рдмрдирд╛рддреЗ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
resizeGL - рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдЦрд┐рдбрд╝рдХреА рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреЗрдЦрдиреЗ рдХрд╛ рдХреНрд╖реЗрддреНрд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдШрдЯрдирд╛рдПрдВ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
рдкреЗрдВрдЯрдЧреЗрд▓ - рдпрд╣ рд╡рд┐рдзрд┐ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧреАред
 glClear(GL_COLOR_BUFFER_BIT); //   glMatrixMode(GL_PROJECTION); //   glLoadIdentity(); //   glOrtho(0,500,500,0,1,0); //     // BlendFunc     ,       // glEnable(GL_BLEND); // glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); qglColor(Qt::white); //     // renderText     ,       ( QFont) renderText(10, 10 , 0, QString::fromUtf8("  %1 :").arg(17), QFont() , 2000); // glBegin  glEnd -     (  ), glBegin   ,   . glBegin(GL_POLYGON); glColor4f(0,1,0, 0.25);//    glVertex2f(200, 300); //  1  4 -     glVertex2f(300, 300); glVertex2f(300, 400); glVertex2f(200, 400); glEnd(); swapBuffers(); 


рдбрдмрд▓ рдмрдлрд░рд┐рдВрдЧ рдХреНрдпреЛрдВ

рдкреЗрдВрдЯрдЧреЗрд▓ рд╕реНрдХреНрд░реАрди рдкрд░ рддреБрд░рдВрдд рдПрдХ рддрд╕реНрд╡реАрд░ рдирд╣реАрдВ рдЦреАрдВрдЪрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрдлрд░ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдФрд░ рдЕрдиреБрд░реЛрдз рдкрд░, рд╕реНрд╡реИрдкрдмреИрдлрд╝рд░ () рд╡рд░реНрддрдорд╛рди рдЫрд╡рд┐ рдХреЛ рдмрдлрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдХреА рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИред рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рдмрдлрд╝рд░рд┐рдВрдЧ рдЖрдкрдХреЛ рдЫрд╡рд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреЛрдИ рдЬрдВрдк рди рд╣реЛред

рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рдХреА рдШрдЯрдирд╛рдУрдВ

mousePressEvent () - рдорд╛рдЙрд╕ рдХреЛ рджрдмрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рд╡рд┐рдзрд┐ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реЗрд╖рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреМрди рд╕рд╛ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рд╣реИред
-рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЗрд╕ рдШрдЯрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдорд╛рдЙрд╕ рдХрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдлрд┐рд░ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ + 1 рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдлреНрд░реЗрдо рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред
- рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЖрдк рдХреНрд▓реИрдВрдк рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдорд╛рдЙрд╕ рдореВрд╡рдореЗрдВрдЯ рдЗрд╡реЗрдВрдЯ

mouseMoveEvent () - рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдорд╛рдЙрд╕ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдмрджрд▓рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рд╣реИ рд▓реЗрдХрд┐рди, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрдорд╛рдЙрдЬрд╝рдЯреНрд░реИрдХрд┐рдВрдЧ (рдЭреВрдард╛) рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдорд╛рдЙрд╕ рдмрдЯрди рджрдмрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдШрдЯрдирд╛ рдХреЛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдмрд┐рдирд╛ рдХреНрд▓рд┐рдХ рдХрд┐рдП рднреА рдХрд╣рд╛ рдЬрд╛рдП, рдЖрдкрдХреЛ рд╕реЗрдЯрдорд╛рдЙрд╕ рдЯреНрд░реИрдХрд┐рдВрдЧ (рд╕рдЪ) рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЙрдЗрдВрдЯрд░ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЪрдпрди рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд░реНрд╕рд░ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред

рдШрдЯрдирд╛ рдЬрдм рдорд╛рдЙрд╕ рдмрдЯрди "рдзрдХреНрдХрд╛" рд╣реИ

mouseReleaseEvent () - рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рдорд╛рдЙрд╕ рдмрдЯрди рдЙрджрд╛рд╕ рд╣реИред рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
- рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╕реНрдХреНрд░реАрди рд╕реЗ рдЪреБрдиреЗ рдЧрдП рдХреНрд╖реЗрддреНрд░ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдХреАрдмреЛрд░реНрдб рдХреА рдШрдЯрдирд╛

keyPressEvent () - рд╡рд┐рдзрд┐ рдХреЛ рдПрдХ рдШрдЯрдирд╛ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХреАрдмреЛрд░реНрдб рдкрд░ рдПрдХ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдПрдХ рдирдП рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдШрдбрд╝реА

рдХреНрдпреВрдЯреАрдорд░ - рд╣рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рд╕реБрдиреЗрдВрдЧреЗ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрд▓реЙрдЯ рдЪрд▓рд╛рдПрдВрдЧреЗред
- рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ рдЯрд╛рдЗрдорд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ 750 рдореАрдЯрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рд╣рдореЗрдВ рдЯрд╛рдЗрдордЖрдЙрдЯ () рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬрдХрд░ рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣рдо рдХрд╛рдо рдХреЛ рдирд╣реАрдВ рд░реЛрдХреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд▓реЙрдЯ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЬрд┐рд╕ рдкрд░ рд╣рдореЗрдВ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЕрдВрдХреЛрдВ рдХреЗ рдХреНрд░рдо рдореЗрдВред
 QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(geese_coord())); timer->start(750); 


рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЖрддреНрдорд╕рд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯред

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

рдирд┐рд╖реНрдХрд░реНрд╖!

рд╣рдорд╛рд░реЗ рдкрд╣рд▓реЗ рдЖрджрд┐рдо рдЦреЗрд▓ рдореЗрдВ рдпрд╣рд╛рдБ рдмрд╣реБрдд рдХрдо рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдмрд╕ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдлрд┐рд░ рд╕реЗ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: "рдпрд╣ рдПрдХ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд▓реЗрдЦ рд╣реИ, рдЬрд┐рд╕реЗ Qt + OpenGL рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред" рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд░реНрдХрд┐рдВрдЧ рдХреЛрдб рдХрд╛ рддреИрдпрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдпрд╣рд╛рдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рд╕реНрд░реЛрдд рджреЗрдЦреЗрдВ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЧреЗрдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

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

рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ - рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдпрд╛ рдкреАрдПрдо рдореЗрдВ рд▓рд┐рдЦреЗрдВред

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


All Articles