我正在使用PyQt中的程序并创建一个窗口小部件,该窗口小部件在该网格上显示网格和一组多边形,您可以移动并单击。当我尝试实现多边形的点击时,它似乎不起作用。下面是不起作用的功能:查找QPolygon是否包含QPoint - 未给出预期结果
def mouseMoveCustom(self, e):
for poly in reversed(self.polys):
if poly.contains(e.pos()):
self.cur_poly = poly
self.setCursor(Qt.PointingHandCursor)
print('mouse cursor in polygon')
break
else:
self.setCursor(Qt.CrossCursor)
为背景,self.polys
是QPolygons
和e.pos()
列表中鼠标的位置。我曾尝试进入
print(poly)
print(poly.contains(QPoint(1,1)))
,以测试它是否会的控制点的工作,但在控制台中,只给了我这样的:
<PySide.QtGui.QPolygon(QPoint(50,350) QPoint(50,0) QPoint(0,0) QPoint(0,350)) at 0x000000000547D608>
False
是有什么我做错了,或如何将上述“多边形”转换为我可以使用的实际QPolygon
?
编辑:
这是用来生成列表self.polys
代码:
self.polys.append(QPolygon([QPoint(points[i][X]+self.transform[X], points[i][Y]+self.transform[Y]) for i in range(len(points))]))
莫非也许是使用内嵌的for循环添加QPolygons
到列表中的一个问题?
谢谢!我认为'QPolygon.contains()'在多边形内找到了一个点,而不仅仅是多边形的外部顶点。 –