Изменение размера QGraphicsItem не обновляет свойства элемента

я изменяю размер QGraphicsItem (mItem) следующим образом:

  QRectF itemSize = mItem->boundingRect();

float scale_width = width / itemSize.width();
float scale_height = height / itemSize.height();

QTransform t;
t.scale(scale_width, scale_height);
mItem->setTransform(t);

визуально он делает то, что должен, однако, если я получаю boundingRect после изменения размера, он не изменился.
У меня сложилось впечатление, что boundingRect может измениться не масштабом, а тем же. Если исходный boundingRect равен (0,0,100,100) и новый идентификатор ширины 200, а новая высота равна 200, я ожидаю, что новый boundingRect будет (0,0,200,200).

Что я делаю неправильно ?

1

Решение

Преобразование обеспечивает отображение между объектным пространством и пространством (миром) сцены (или, возможно, объектным пространством родителя) для рендеринга — это не применяется к самому объекту.

Таким образом, установка масштабного преобразования для объекта не изменит его ограничивающую рамку, потому что объект не был масштабирован — только так, как он отображается на сцене. документы объясни это лучше чем могу.

QGraphicsItem имеет много mapTo... а также mapFrom... методы, которые обеспечивают то, что вам нужно.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]