欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

qgraphicsview鼠标移动图片_如何在中间鼠标的QGraphicsView中滚动QGraphicsScene?

发布时间:2025/3/21 编程问答 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 qgraphicsview鼠标移动图片_如何在中间鼠标的QGraphicsView中滚动QGraphicsScene? 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我使用pyqt4.8和python2.7

我创建QGraphicsView并插入QGraphicsScene.比View更大的场景,需要滚动.视图有垂直和水平滚动,但我想通过鼠标中键滚动.

我创建鼠标事件功能,但运动到奇怪.

def mousePressEvent(self, event):

self.__mousePressPos = None

self.__mouseMovePos = None

if event.button() == Qt.MidButton:

self.__mousePressPos = event.globalPos()

self.__mouseMovePos = event.globalPos()

else:

super(MyView, self).mousePressEvent(event)

def mouseMoveEvent(self, event):

if event.buttons() == Qt.MidButton:

curPos = self.__mousePressPos - self.__mouseMovePos

self.centerOn(curPos.x(), curPos.y())

self.__mouseMovePos = globalPos

else:

super(MyView, self).mouseMoveEvent(event)

def mouseReleaseEvent(self, event):

if self.__mousePressPos is not None:

moved = event.globalPos() - self.__mousePressPos

if moved.manhattanLength() > 3:

event.ignore()

return

super(MyView, self).mouseReleaseEvent(event)

首先,场景移动与鼠标的移动不对应.我怀疑是视口的相对大小和场景的责任.以及舞台的规模.

其次,我无法移动视口外的场景,它到达边缘时停止.

让第二个仍然可以容忍.让它保持原样,但如何计算正确移动的场景的正确偏移移动鼠标,无论它被捕获的位置?

解决方法:

我的解决方案不是调用centerOn方法,而是使用QGraphicView的滚动条:

class MyView(QtGui.QGraphicsView):

def mousePressEvent(self, event):

if event.button() == Qt.MidButton: # or Qt.MiddleButton

self.__prevMousePos = event.pos()

else:

super(MyView, self).mousePressEvent(event)

def mouseMoveEvent(self, event):

if event.buttons() == Qt.MidButton: # or Qt.MiddleButton

offset = self.__prevMousePos - event.pos()

self.__prevMousePos = event.pos()

self.verticalScrollBar().setValue(self.verticalScrollBar().value() + offset.y())

self.horizontalScrollBar().setValue(self.horizontalScrollBar().value() + offset.x())

else:

super(MyView, self).mouseMoveEvent(event)

标签:qgraphicsview,python,pyqt,mouseevent,qgraphicsscene

来源: https://codeday.me/bug/20190824/1709005.html

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的qgraphicsview鼠标移动图片_如何在中间鼠标的QGraphicsView中滚动QGraphicsScene?的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。