Mercurial > hg > orthanc-stone
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 } |