2013-02-11 3 views
1

Я изменение размера QGraphicsItem (MITEM) следующим образом:Resizing QGraphicsItem не обновляет свойства элемента

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, я ожидаю, что новый ограничивающий релик будет (0,0,2200,200).

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

ответ

1

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

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

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

Смежные вопросы