Здравствуйте, уважаемые формчане. Извините за нубские вопросы, но я совсем запутался. Наследую от QGraphicsItem свой класс. Мне нужно, чтобы при выделении производились какие-то действия. В дальнейшем планирую наследовать дополнительно от QObject и посылать сигналы при изменении. Пробую простейшие действия:
QVariant MovingObject::itemChange(GraphicsItemChange change, const QVariant &value)
{
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);
}
ItemFlagsHaveChanged
ItemFlagsChange
ItemFlagsHaveChanged
ItemSceneChange
ItemSceneHasChanged
ItemVisibleChange
ItemVisibleHasChanged
ItemSelectedChange
ItemSelectedHasChanged
Т.е. я перемещаю объект, а он не отлавливает ItemPositionChange. В конструкторе я прописал:
setAcceptHoverEvents(true);
setAcceptDrops(true);;
setFlag(QGraphicsItem::ItemIsMovable);
setFlag(QGraphicsItem::ItemIsSelectable);