Mercurial > hg > orthanc-stone
diff Samples/Qt/QStoneOpenGlWidget.cpp @ 879:12b591d5d63c am-dev
some Qt integration (wip)
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Fri, 05 Jul 2019 14:52:43 +0200 |
parents | 23701fbf228e |
children | a8cd3755db21 |
line wrap: on
line diff
--- a/Samples/Qt/QStoneOpenGlWidget.cpp Wed Jul 03 10:26:51 2019 +0200 +++ b/Samples/Qt/QStoneOpenGlWidget.cpp Fri Jul 05 14:52:43 2019 +0200 @@ -1,6 +1,10 @@ #include "../../Framework/OpenGL/OpenGLIncludes.h" #include "QStoneOpenGlWidget.h" +#include <QMouseEvent> + +using namespace OrthancStone; + void QStoneOpenGlWidget::initializeGL() { glewInit(); @@ -25,3 +29,53 @@ doneCurrent(); } +void ConvertFromPlatform( + OrthancStone::GuiAdapterMouseEvent& dest, + const QMouseEvent& qtEvent) +{ + dest.targetX = qtEvent.x(); + dest.targetY = qtEvent.y(); + + switch (qtEvent.button()) + { + case Qt::LeftButton: dest.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT; break; + case Qt::MiddleButton: dest.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_MIDDLE; break; + case Qt::RightButton: dest.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_RIGHT; break; + default: + dest.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT; + } + + if (qtEvent.modifiers().testFlag(Qt::ShiftModifier)) + { + dest.shiftKey = true; + } + if (qtEvent.modifiers().testFlag(Qt::ControlModifier)) + { + dest.ctrlKey = true; + } + if (qtEvent.modifiers().testFlag(Qt::AltModifier)) + { + dest.altKey = true; + } + +} + + + +void QStoneOpenGlWidget::mousePressEvent(QMouseEvent* qtEvent) +{ + OrthancStone::GuiAdapterMouseEvent event; + ConvertFromPlatform(event, *qtEvent); + + if (sceneInteractor_.get() != NULL) + { + sceneInteractor_->OnMouseEvent(event); + } + + + // convert +//TODO event-> + +// sceneInteractor_->OnMouseEvent(event); +} +