我有一个自定义的QGraphicsItem,它什么也没画,但是是其他QGraphicsItems(例如QGraphicsRectItem等)的父级。我的顶级商品在子商品“内部”的某处具有(0,0)。这很不方便。我想将原点移到childrenBoundingRect()的左上角。

在图片中,我的顶级商品的(0,0)位于子商品的某个位置(实心箭头)。我想将原点移到虚线。我怎样才能做到这一点?

结果,我希望顶级商品的定位会更方便。

c++ - 如何重新定义QGraphicsItem的(0,0)的位置?-LMLPHP

最佳答案

覆盖QGraphicsItem的示例通常显示源自(0,0)的boundingRect()函数。更改此设置将更改原点。因此,例如,要将其更改为宽度和高度是类内部存储的变量的中心,可以执行以下操作:-

QRectF boundingRect() const
{
    return (-width / 2, -height / 2, width, height);
}

09-05 23:22