Берем проект
diagramscene из примеров, поставляемый с Qt.
В diagramitem.срр находим функцию
QVariant DiagramItem::itemChange(GraphicsItemChange change,
const QVariant &value)
"ремим" все что в ней есть и согласно помощи в одной из веток форума
http://www.prog.org.ru/topic_4008_0.html вставляем:
if (change == ItemPositionChange) {
// value это новое положение.
QPointF newPos = value.toPointF();
newPos.setX(x());
QRectF rect = scene()->sceneRect();
if (!rect.contains(newPos)) {
// Сохраняем элемент внутри прямоугольника сцены.
newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left())));
newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())));
return newPos;
}
}
return QGraphicsItem::itemChange(change, value);
однако ограничение перемещения по оси Х не происходит !!!???
З.Ы. может вопрос и тривиальный но у меня вызвал затруднение.