Мое приложение использует Qt.
У меня есть класс, который наследует QGraphicsPixmapItem.
При применении преобразований к этим элементам (например, вращений) исходной точкой элемента (или точкой поворота) всегда является верхний левый угол.
Я хотел бы изменить это происхождение, чтобы, например, при установке положения элемента это фактически изменило центр растрового изображения.
Или, если я применяю вращение, источником вращения будет центр растрового изображения.
Я не нашел способа сделать это прямо из коробки с помощью Qt, поэтому я решил повторно реализовать itemChange() следующим образом:
QVariant JGraphicsPixmapItem::itemChange(GraphicsItemChange Change, const QVariant& rValue)
{
switch (Change)
{
case QGraphicsItem::ItemPositionHasChanged:
// Emulate a pivot point in the center of the image
this->translate(this->boundingRect().width() / 2,
this->boundingRect().height() / 2);
break;
case QGraphicsItem::ItemTransformHasChanged:
break;
}
return QGraphicsItem::itemChange(Change, rValue);
}
Я думал, что это сработает, так как в документе Qt упоминается, что позиция элемент и его матрица преобразования — это два разных понятия.
Но это не работает.
Любая идея ?