comparison Samples/Qt/QStoneOpenGlWidget.cpp @ 883:30268a0cafca am-dev

basic scene Qt sample working
author Alain Mazy <alain@mazy.be>
date Tue, 09 Jul 2019 14:34:56 +0200
parents a8cd3755db21
children aad5ccf1be10
comparison
equal deleted inserted replaced
882:31319fe867b9 883:30268a0cafca
58 } 58 }
59 if (qtEvent.modifiers().testFlag(Qt::AltModifier)) 59 if (qtEvent.modifiers().testFlag(Qt::AltModifier))
60 { 60 {
61 guiEvent.altKey = true; 61 guiEvent.altKey = true;
62 } 62 }
63
64 } 63 }
65 64
66 void QStoneOpenGlWidget::mouseEvent(QMouseEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType) 65 void QStoneOpenGlWidget::mouseEvent(QMouseEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType)
67 { 66 {
68 OrthancStone::GuiAdapterMouseEvent guiEvent; 67 OrthancStone::GuiAdapterMouseEvent guiEvent;
84 mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEDOWN); 83 mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEDOWN);
85 } 84 }
86 85
87 void QStoneOpenGlWidget::mouseMoveEvent(QMouseEvent* qtEvent) 86 void QStoneOpenGlWidget::mouseMoveEvent(QMouseEvent* qtEvent)
88 { 87 {
89 mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEDOWN); 88 mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEMOVE);
90 } 89 }
91 90
92 void QStoneOpenGlWidget::mouseReleaseEvent(QMouseEvent* qtEvent) 91 void QStoneOpenGlWidget::mouseReleaseEvent(QMouseEvent* qtEvent)
93 { 92 {
94 mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEUP); 93 mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEUP);
95 } 94 }
95
96 void ConvertFromPlatform(
97 OrthancStone::GuiAdapterKeyboardEvent& guiEvent,
98 const QKeyEvent& qtEvent)
99 {
100 if (qtEvent.text().length() > 0)
101 {
102 guiEvent.sym[0] = qtEvent.text()[0].cell();
103 }
104 else
105 {
106 guiEvent.sym[0] = 0;
107 }
108 guiEvent.sym[1] = 0;
109
110 if (qtEvent.modifiers().testFlag(Qt::ShiftModifier))
111 {
112 guiEvent.shiftKey = true;
113 }
114 if (qtEvent.modifiers().testFlag(Qt::ControlModifier))
115 {
116 guiEvent.ctrlKey = true;
117 }
118 if (qtEvent.modifiers().testFlag(Qt::AltModifier))
119 {
120 guiEvent.altKey = true;
121 }
122
123 }
124
125
126 bool QStoneOpenGlWidget::keyEvent(QKeyEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType)
127 {
128 bool handled = false;
129 OrthancStone::GuiAdapterKeyboardEvent guiEvent;
130 ConvertFromPlatform(guiEvent, *qtEvent);
131 guiEvent.type = guiEventType;
132
133 if (sceneInteractor_.get() != NULL && compositor_.get() != NULL)
134 {
135 handled = sceneInteractor_->OnKeyboardEvent(guiEvent);
136
137 if (handled)
138 {
139 // force redraw of the OpenGL widget
140 update();
141 }
142 }
143 return handled;
144 }
145
146 void QStoneOpenGlWidget::keyPressEvent(QKeyEvent *qtEvent)
147 {
148 bool handled = keyEvent(qtEvent, GUIADAPTER_EVENT_KEYDOWN);
149 if (!handled)
150 {
151 QOpenGLWidget::keyPressEvent(qtEvent);
152 }
153 }
154
155 void QStoneOpenGlWidget::keyReleaseEvent(QKeyEvent *qtEvent)
156 {
157 bool handled = keyEvent(qtEvent, GUIADAPTER_EVENT_KEYUP);
158 if (!handled)
159 {
160 QOpenGLWidget::keyPressEvent(qtEvent);
161 }
162 }
163
164 void QStoneOpenGlWidget::wheelEvent(QWheelEvent *qtEvent)
165 {
166 OrthancStone::GuiAdapterWheelEvent guiEvent;
167 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
168 }