我正在编写一个继承自QGraphicsItemGroup
的类,其主要子类是QGraphicsPathItem
。整个过程用于绘制折线。我想为这些行设置一个合适的悬停系统,我重新实现了对象的shape
方法,如下所示:
def shape(self):
stroker = QtWidgets.QPainterPathStroker()
stroker.setWidth(10 * self.resolution) # resolution handles zoom and stuff
path = stroker.createStroke(self.__path.path()).simplified()
return path
在上面的代码段中,self.__path
是我提到的QGraphicsPathItem
更早。
为了简单起见,这里有几张照片。我画的线,我在屏幕上看到:
我想要的悬停区域:
我目前使用上面显示的重新实现的shape
方法的悬停区域:
正如您所猜测的那样,这样的选区对任何目的都没有用。最糟糕的是,我尝试使用完全相同的方法来生成线的轮廓,然后使用toFillPolygon
生成我在同一对象中呈现的多边形,方法是向我的对象添加QGraphicsPolygonItem
子项:我的屏幕上显示的形状正是我想要的,但当我使用相同的路径通过shape
创建悬停区域时,它会给我无用的悬停区域(图像3)。
那么,你知道为什么用QPainterPathStroker
获得的路径允许我显示一个似乎与我想要的悬停区域完全对应的多边形,但当我在shape
中使用该路径时,获得的超过面积是多么的?如果是这样,你知道如何解决这个问题吗?