qgraphicsview鼠标移动图片_如何在中间鼠标的QGraphicsView中滚动QGraphicsScene?
我使用pyqt4.8和python2.7
我創(chuàng)建QGraphicsView并插入QGraphicsScene.比View更大的場(chǎng)景,需要滾動(dòng).視圖有垂直和水平滾動(dòng),但我想通過(guò)鼠標(biāo)中鍵滾動(dòng).
我創(chuàng)建鼠標(biāo)事件功能,但運(yùn)動(dòng)到奇怪.
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)
首先,場(chǎng)景移動(dòng)與鼠標(biāo)的移動(dòng)不對(duì)應(yīng).我懷疑是視口的相對(duì)大小和場(chǎng)景的責(zé)任.以及舞臺(tái)的規(guī)模.
其次,我無(wú)法移動(dòng)視口外的場(chǎng)景,它到達(dá)邊緣時(shí)停止.
讓第二個(gè)仍然可以容忍.讓它保持原樣,但如何計(jì)算正確移動(dòng)的場(chǎng)景的正確偏移移動(dòng)鼠標(biāo),無(wú)論它被捕獲的位置?
解決方法:
我的解決方案不是調(diào)用centerOn方法,而是使用QGraphicView的滾動(dòng)條:
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)
標(biāo)簽:qgraphicsview,python,pyqt,mouseevent,qgraphicsscene
來(lái)源: https://codeday.me/bug/20190824/1709005.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的qgraphicsview鼠标移动图片_如何在中间鼠标的QGraphicsView中滚动QGraphicsScene?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 大数据审计的发展_从历史的角度看大数据审
- 下一篇: element ui走马灯怎么添加_Lo