Чтобы создать новый элемент QGraphicsItem, мы должны создать подкласс и переопределить boundingRect ():
QRectF CircleItem::boundingRect() const
{
qreal penWidth = 1;
return QRectF(-radius - penWidth / 2, -radius - penWidth / 2,
diameter + penWidth, diameter + penWidth);
}
Но в этом случае у нас есть прямоугольник с new_radius = (радиус + диаметр) / 2?
В примерах Nodes говорится, что
QRectF Node::boundingRect() const
{
qreal adjust = 2;
return QRectF( -10 - adjust, -10 - adjust, 23 + adjust, 23 + adjust);
}
Qt document: ограничивающий прямоугольник узла - это прямоугольник размером 20x20 с центром вокруг его начала (0, 0), отрегулированный на 2 единицы во всех направлениях, чтобы компенсировать контур узла на 3 единицы вниз и вправо, чтобы освободить место для простой тени.
Почему размер 20х20, а не 25х25? Что я пропустил?