I'm trying to test whether a given point (x, y) is located on or close to the outline of a QGraphicsPathItem. 
Using QGraphicsItem.contains() or .collidesWithItem() / Path() will not do: those also return True if the point is contained within the area on the interior of the path, while I want to test only for points on the outline. How can I accomplish that? 
After posting the question I found the following solution:
    path = QPainterPath(...)   # Path we are testing against
    point = QPointF(...)       # Current position
    stroker = QPainterPathStroker()
    stroker.setWidth(10)        # Distance which we consider "on" the path 
    stroke = stroker.createStroke(path)
    if stroke.contains(point):
        # point is on path
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With