我在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
,请提供一个示例,在其他框架中显示我的上述示例。
答案 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)