15 #include <QMouseEvent>
20 CQtGlCanvasBase::CQtGlCanvasBase(QWidget* parent)
21 : QOpenGLWidget(parent),
23 m_isPressLMouseButton(false),
24 m_isPressRMouseButton(false)
26 m_mainViewport = getOpenGLSceneRef()->getViewport(
"main");
27 setMouseTracking(
true);
30 void CQtGlCanvasBase::initializeGL()
34 QOpenGLWidget::initializeGL();
37 void CQtGlCanvasBase::paintGL() { renderCanvas(); }
38 void CQtGlCanvasBase::resizeGL(
int width,
int height)
48 return m_mainViewport;
51 float CQtGlCanvasBase::getCameraZoomDistance()
const
57 void CQtGlCanvasBase::mousePressEvent(QMouseEvent* event)
59 setMousePos(event->pos().x(), event->pos().y());
60 setMouseClicked(
true);
62 m_isPressLMouseButton = (
event->button() == Qt::LeftButton);
63 m_isPressRMouseButton = (
event->button() == Qt::RightButton);
65 QOpenGLWidget::mousePressEvent(event);
68 void CQtGlCanvasBase::mouseMoveEvent(QMouseEvent* event)
70 if (m_isPressLMouseButton ||
71 m_isPressRMouseButton)
75 int X =
event->pos().x();
76 int Y =
event->pos().y();
80 CamaraParams
params = cameraParams();
82 if (m_isPressLMouseButton)
84 if (event->modifiers() == Qt::ShiftModifier)
87 else if (event->modifiers() == Qt::ControlModifier)
88 updateRotate(
params, X, Y);
90 else if (event->modifiers() == Qt::NoModifier)
91 updateOrbitCamera(
params, X, Y);
99 updateCamerasParams();
103 QOpenGLWidget::mouseMoveEvent(event);
106 void CQtGlCanvasBase::mouseReleaseEvent(QMouseEvent* event)
108 setMouseClicked(
false);
109 m_isPressLMouseButton =
false;
110 m_isPressRMouseButton =
false;
111 QOpenGLWidget::mouseReleaseEvent(event);
114 void CQtGlCanvasBase::wheelEvent(QWheelEvent* event)
116 CamaraParams
params = cameraParams();
117 updateZoom(
params, event->delta());
120 updateCamerasParams();
123 QOpenGLWidget::wheelEvent(event);
126 void CQtGlCanvasBase::renderError(
const std::string& err_msg)
131 void CQtGlCanvasBase::updateCamerasParams()
134 updateCameraParams(cam);
139 assert(m_mainViewport);
140 m_mainViewport->insert(newObject);
145 assert(m_mainViewport);
146 m_mainViewport->removeObject(newObject);
149 bool CQtGlCanvasBase::isPressLMouseButton()
const
151 return m_isPressLMouseButton;
154 bool CQtGlCanvasBase::isPressRMouseButton()
const
156 return m_isPressRMouseButton;
159 void CQtGlCanvasBase::unpressMouseButtons()
161 m_isPressLMouseButton =
false;
162 m_isPressRMouseButton =
false;
165 #endif // MRPT_HAS_Qt5