将QmouseEvent转换为拖动移动器的qgraphicscenemouseevent

2024-09-27 23:17:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想移动qgraphicscene而不是移动我的整个widget(由于widget超出限制,这导致了一些图形问题)。在

这就是我要做的:

def mousePressEvent(self, event):
    #super(SvgView, self).mousePressEvent(event)

    self.svgItem.mousePressEvent(event)

    self.x += event.pos().x()
    self.y += event.pos().y()
    event.accept()

(请注意,我没有以正确的方式更新self.x和self.y,因为这是一个“拖动”运动,我应该将“delta”改为“delta”,但我不知道如何获取它)

这不起作用,因为svgItem需要一个QGraphicsSceneMouseEvent。在

我试着在场景中做这个mouseEvent,而不是在QGraphicsView上做,但它不会使项目拖。在

有没有办法不做这个转换,如果有必要我怎么做?在


Tags: posselfevent图形def方式widgetdelta
1条回答
网友
1楼 · 发布于 2024-09-27 23:17:00

对我来说SVG+Javascript是非常容易理解的,有了它我可以做任何我想做的事情。但是我正在为PyQt的桌面应用而挣扎。Avaris帮助我理解Qt中的事件传播。 我写了几行做实验,但也许这对你有帮助。不是最好的,而是“eppur si muove”:

from PySide import QtGui, QtCore

class View(QtGui.QGraphicsView): # as separate class
    def BlahBlah():
        print dir()

class Scene_w_ellipse(QtGui.QGraphicsScene):
    def __init__(self):
        super(Scene_w_ellipse, self).__init__()
        self.setSceneRect(0,0,300,200)
        self.C = QtGui.QGraphicsEllipseItem(-4,-20,80,40)
        self.C.setPos(100,70)
        self.C.setFlags(QtGui.QGraphicsItem.ItemIsMovable)
        #self.C.mousePressEvent(QtGui.QGraphicsSceneMouseEvent)
        self.addItem(self.C)

    def mousePressEvent(self, event):
        print dir()

    def mouseMoveEvent(self, event):
        self.C.mouseMoveEvent(event)

    def mouseReleaseEvent(self, event):
        self.C.mouseReleaseEvent(event)

对于你的背景,不要子类化,把它作为单独的类来构建。在

相关问题 更多 >

    热门问题