【发布时间】:2013-11-03 14:51:28
【问题描述】:
我正在使用 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))函数都被执行,但我只想翻译对象。我想问你有没有一种方法可以修改代码,翻译和旋转将与期望的组合键一起工作。目前我没有任何想法。
【问题讨论】:
标签: qt python-2.7 pyqt4 pyopengl qtgui