я изменяю размер 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).
Что я делаю неправильно ?
Преобразование обеспечивает отображение между объектным пространством и пространством (миром) сцены (или, возможно, объектным пространством родителя) для рендеринга — это не применяется к самому объекту.
Таким образом, установка масштабного преобразования для объекта не изменит его ограничивающую рамку, потому что объект не был масштабирован — только так, как он отображается на сцене. документы объясни это лучше чем могу.
QGraphicsItem
имеет много mapTo...
а также mapFrom...
методы, которые обеспечивают то, что вам нужно.
Других решений пока нет …