No need intercept mouse events.
Qt Code:
  1. class EllipseItem : public QGraphicsEllipseItem
  2. {
  3. public:
  4. EllipseItem(const QRectF & rect, QGraphicsEllipseItem * parent = nullptr)
  5. : QGraphicsEllipseItem(rect, parent)
  6. {
  7. setFlags(ItemIsMovable | ItemSendsGeometryChanges);
  8. }
  9.  
  10. protected:
  11. QVariant itemChange(GraphicsItemChange change, const QVariant & value) override
  12. {
  13. if(change == ItemPositionChange)
  14. return QPointF(scenePos().x(), value.toPointF().y());
  15.  
  16. return QGraphicsEllipseItem::itemChange(change, value);
  17. }
  18. };
To copy to clipboard, switch view to plain text mode