setTransformOriginPoint не работает должным образом

Я унаследовал от QGraphicsObject и создал новый класс с растровым изображением и установил для его исходной точки преобразования значение:

setTransformOriginPoint(boundingRect().center());

Но когда я вызываю setRotation() в моем классе (который добавляется к QGraphicsView с помощью сцены), вращение не использует центр в качестве привязки вращения. Как я могу установить центр в качестве якоря вращения? Спасибо !

Дополнительная информация: вызов setRotation () вне функции sceneEvent работает, но внутри sceneEvent, при щелчке, исходная точка не работает.


person Tarantula    schedule 03.10.2013    source источник


Ответы (1)


Нарисуйте растровое изображение на QRect(0, 0, pixmap.width(), pixmap.height(). Используйте этот прямоугольник также для ограничивающего прямоугольника. Используйте setPos, чтобы перемещать предмет по сцене. Используйте setTransformOriginPoint(pixmap.width() / 2, pixmap.height() / 2), чтобы установить исходную точку. Эти координаты находятся в координатах элемента, поэтому они должны указывать на центр растрового изображения независимо от положения элемента.

person Pavel Strakhov    schedule 04.10.2013
comment
Я уже пытался использовать width () / 2 и height () / 2, и это на самом деле то же значение, что и boundingRact (). Center (), проблема в том, что это значение не соблюдается Qt, когда я вызовите setRotation () после получения события жеста ущипнуть. Спасибо ! - person Tarantula; 04.10.2013