日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。