У меня есть проблема, ограничивающей ход моих QGraphicItems:точки 0/0 из QGraphicsItem.scene() (ограничение движения пункта)
QVariant CustomRectItem::itemChange(GraphicsItemChange change, const QVariant& value)
{
if (change == QGraphicsItem::ItemPositionChange && this->scene()) {
// parameter value is the new position
QPointF newPos = value.toPointF();
QRectF rect = this->scene()->sceneRect();
// keep the item inside the scene rect
if (!rect.contains(newPos)) {
if(newPos.x() < rect.x())
newPos.setX(rect.x());
return newPos;
}
}
return QGraphicsItem::itemChange(change, value);
}
Этот код должен предотвратить элемент из неоспоримых тащили слева от сцены и тем самым увеличивая его размер. Это работает. Моя проблема:
Я вставляю элементы при создании сцены. На сидении при x = 0 (координата сцены.) Другая при x = 10 (координата сцены.) С помощью этого кода я НЕ МОЖЕТ перетащить второй элемент слева от x = 10.
Кажется, что вызов QGraphicsItem :: scene() возвращает разные сцены для обоих предметов.