15 #include <QMouseEvent> 20 CQtGlCanvasBase::CQtGlCanvasBase(QWidget* parent)
24 m_mainViewport = getOpenGLSceneRef()->getViewport(
"main");
25 setMouseTracking(
true);
28 void CQtGlCanvasBase::initializeGL()
32 QOpenGLWidget::initializeGL();
35 void CQtGlCanvasBase::paintGL() { renderCanvas(); }
36 void CQtGlCanvasBase::resizeGL(
int width,
int height)
46 return m_mainViewport;
49 float CQtGlCanvasBase::getCameraZoomDistance()
const 55 void CQtGlCanvasBase::mousePressEvent(QMouseEvent* event)
57 setMousePos(event->pos().x(),
event->pos().y());
58 setMouseClicked(
true);
60 m_isPressLMouseButton = (
event->button() == Qt::LeftButton);
61 m_isPressRMouseButton = (
event->button() == Qt::RightButton);
63 QOpenGLWidget::mousePressEvent(event);
66 void CQtGlCanvasBase::mouseMoveEvent(QMouseEvent* event)
68 if (m_isPressLMouseButton ||
69 m_isPressRMouseButton)
73 int X =
event->pos().x();
74 int Y =
event->pos().y();
78 CamaraParams
params = cameraParams();
80 if (m_isPressLMouseButton)
82 if (event->modifiers() == Qt::ShiftModifier)
85 else if (event->modifiers() == Qt::ControlModifier)
86 updateRotate(
params, X, Y);
88 else if (event->modifiers() == Qt::NoModifier)
89 updateOrbitCamera(
params, X, Y);
97 updateCamerasParams();
101 QOpenGLWidget::mouseMoveEvent(event);
104 void CQtGlCanvasBase::mouseReleaseEvent(QMouseEvent* event)
106 setMouseClicked(
false);
107 m_isPressLMouseButton =
false;
108 m_isPressRMouseButton =
false;
109 QOpenGLWidget::mouseReleaseEvent(event);
112 void CQtGlCanvasBase::wheelEvent(QWheelEvent* event)
114 CamaraParams
params = cameraParams();
115 updateZoom(
params, event->delta());
118 updateCamerasParams();
121 QOpenGLWidget::wheelEvent(event);
124 void CQtGlCanvasBase::renderError(
const std::string& err_msg)
129 void CQtGlCanvasBase::updateCamerasParams()
132 updateCameraParams(cam);
137 assert(m_mainViewport);
138 m_mainViewport->insert(newObject);
143 assert(m_mainViewport);
144 m_mainViewport->removeObject(newObject);
147 bool CQtGlCanvasBase::isPressLMouseButton()
const 149 return m_isPressLMouseButton;
152 bool CQtGlCanvasBase::isPressRMouseButton()
const 154 return m_isPressRMouseButton;
157 void CQtGlCanvasBase::unpressMouseButtons()
159 m_isPressLMouseButton =
false;
160 m_isPressRMouseButton =
false;
163 #endif // MRPT_HAS_Qt5 float getZoomDistance() const
GLsizei const GLchar ** string
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
GLAPI void GLAPIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
Classes for creating GUI windows for 2D and 3D visualization.
This base class implements a working with opengl::Camera and a OpenGL canvas, and it's used in gui::C...
A camera: if added to a scene, the viewpoint defined by this camera will be used instead of the camer...
GLenum GLsizei GLsizei height
GLenum const GLfloat * params