0
當QGraphicsScene項目在它的子項目後面時,我希望鼠標抓取器檢查後面的項目,然後抓取最頂端的項目,如果第一個沒有抓取。Qt鼠標事件傳播與場景項目
示例代碼:
from PySide.QtCore import *
from PySide.QtGui import *
class View(QGraphicsView):
pass
class Scene(QGraphicsScene):
pass
class ChildCircle(QGraphicsEllipseItem):
def __init__(self, parent):
super(ChildCircle, self).__init__()
self.setRect(QRect(-20,-20,70,70))
self.setParentItem(parent)
def mousePressEvent(self, event):
print "Circle is Pressed", event.pos()
class ParentRectangle(QGraphicsRectItem):
def __init__(self, scene):
super(ParentRectangle, self).__init__()
self.scene = scene
self.setRect(QRect(0,0,20,20))
self.scene.addItem(self)
circle = ChildCircle(self)
def mousePressEvent(self, event):
print "Rectangle PRESS", event.pos()
class Window(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.s = Scene()
self.s.setSceneRect(-200,-100,300,300,)
self.v = View(self.s)
self.v.setDragMode(QGraphicsView.ScrollHandDrag)
self.setCentralWidget(self.v)
ParentRectangle(self.s)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = Window()
window.resize(300, 200)
window.show()
sys.exit(app.exec_())
非常感謝。它使我朝正確的方向發展。此外,我確信PySide文檔涵蓋了所有需求,但碰巧檢查Qt的「主」文檔也很明智。 – Alex