我正在使用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()'在多邊形內找到了一個點,而不僅僅是多邊形的外部頂點。 –