Мое приложение использует 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 упоминается, что положение элемента и его матрица преобразования - это две разные концепции.
Но это не работает.
Есть идеи?