QGraphicsItem - игнорировать родительский поворот - PullRequest
0 голосов
/ 06 августа 2020

У меня есть класс, унаследованный от QGraphicsItem и содержащий внутри несколько QGraphicsItem членов. Все они размещены на сцене как дочерние элементы с помощью метода setParentItem .

Итак, я хочу знать, есть ли способ заставить дочерний элемент игнорировать события родительского вращения. Я пытался переопределить метод QGraphicsItem :: itemChange , но это не сработало. Дочерний элемент всегда имеет значение поворота '0', но все они вращаются родительским элементом.

QVariant Item::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
{
    if (change == ItemRotationChange) {
         if (side == TextSide::Left) {
           labelProxyWidget->setPos(sidePos); // sidePos is just a QPointF
           labelProxyWidget->setRotation(0); // This is useless, because rotation for child item is always 0.
         }
    }
}

Я также попытался установить флаг ItemIgnoresTransformations для ребенок, который должен занимать позицию, но он также игнорируется. И я не могу использовать QGraphicsItemGroup в моем случае.

Я пытаюсь добиться поведения, при котором дочерний элемент QGraphicsItem будет удерживаться на месте, даже если родительский элемент был повернут. Или, если это невозможно, найдите способ повернуть этот элемент внутри родительского элемента, игнорируя его преобразования.

...