更新自定义QGraphicsItem在连接项目更改时的位置

时间:2016-06-13 19:33:29

标签: python c++ qt pyqt qgraphicsitem

我有两个子类化的QGraphicsRectItems,它们应该与一个根据文本框位置进行调整的行连接。

在Qt docus的diagramscene example中,子类itemChanged的{​​{1}}方法调用连接箭头的QGraphicsPolygonItem方法,该方法调用updatePosition进行更新箭头的位置。在我的情况下,我无法拨打setLine因为我将setLine作为子类而不是QGraphicsItem

我应该如何在QGraphicsLineItem类中实现updatePosition方法来更新我的QGraphicsItem的位置?以下是一个可运行的示例,显示了单击和移动文本框时当前发生的情况。

enter image description here

Arrow

1 个答案:

答案 0 :(得分:3)

项目的位置实际上并不重要 - 它可以保持在0,0 - 提供边界框是正确的(它将根据您的Arrow :: boundingBox实现)。因此,我认为如果您只是触发一个边界框更改,并在updatePosition中重绘,一切都将按您的需要工作。

当然,如果您关心箭头位于线的头部或尾部,您可以在updatePosition中移动它,并相应地调整边界框/绘制坐标 - 但这完全是如果这是有道理的话,给你。