我正在使用PyQt及其对OpenGL的绑定来制作一个简单的3D查看器。我想实现以下用户操作(例如在solidworks中):
-
平移/平移:使用组合
ctrl
+
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)
)函数被执行,但我只想翻译对象。我想问你,有没有一种方法可以修改转换和旋转的代码,使其与所需的组合键一起工作。现在我没有任何想法。