我正在使用 PyQt 及其对 OpenGL 的绑定来开发一个简单的 3D 查看器。我想实现以下用户操作(例如在solidworks中):
- 平移/翻译:组合
ctrl
+middle mouse button (pressed)
- 旋转:
middle mouse button (pressed)
和移动鼠标。代码是:
def mousePressEvent(self, event):
self.last_pos = event.posF()
def mouseMoveEvent(self, event):
dxy = event.posF() - self.last_pos
dx = dxy.x() / self.width()
dy = dxy.y() / self.height()
# rotate -
if event.buttons() & Qt.MidButton:
self.camera.rotate(dx, dy)
# translate/pan
elif (event.buttons() & Qt.MidButton) and (event.modifiers() & Qt.ControlModifier):
self.camera.pan(dx, dy)
# zoom
self.last_pos = event.posF()
我遇到的问题是,当我按下ctrl
然后执行middle mouse button
两个 (self.camera.rotate(dx, dy)
和self.camera.pan(dx, dy)
) 函数时,但我只想翻译对象。我想问你有没有一种方法可以修改代码,翻译和旋转将与期望的组合键一起工作。现在我没有任何想法。