如何检测鼠标点击在pyside中绘制的椭圆?

时间:2014-05-25 14:35:28

标签: python qt pyside qwidget qgraphicsview

我在QPainter内使用QWidget在黑色背景上绘制一堆椭圆,如下所示:

paint = QPainter()
paint.begin(self)

paint.setBrush(Qt.black)
paint.drawRect(event.rect())

brush = ...
paint.setBrush(brush)
paint.drawEllipse(center, rad, rad)

绘制了一堆椭圆后,然后我想检测鼠标点击这样一个现有的椭圆。我在QPainter的文档中找不到任何明显的内容。

如果还有其他东西要用来代替QPainter,请提供一个示例,在其他框架中显示我的上述示例。

1 个答案:

答案 0 :(得分:1)

您需要自行检测自定义区域,如下所示:

def mousePressEvent(self, event):
    ''' You will have to implement the contain algorithm yourself'''
    if sel.fo(even.pos()):
        self.myMethod()

QGraphicsEllipseItem.contains()

或者,您可以查看QGraphicsEllipseItem,因为它有contains-logic implemented and offered

def mousePressEvent(self, event):
    if self.contains(event.pos()):
        self.myMethod()

并使用相应的参数创建对象:

scene = QGraphicsScene()
ellipseItem = MyGraphicsEllipseItem(centerx, centery, rad, rad)
scene.addItem(ellipseItem)

view = QGraphicsView(scene)
view.show()

scene.setBackgroundBrush(Qt.black)