void DiagramScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) { if (line != 0 && myMode == InsertLine) { QList<QGraphicsItem *> firstItems = items(line->line().p1()); if (firstItems.count() && firstItems.first() == line) firstItems.removeFirst(); QList<QGraphicsItem *> secondItems = items(line->line().p2()); if (secondItems.count() && secondItems.first() == line) secondItems.removeFirst(); removeItem(line); delete line; if (firstItems.count() > 0 && secondItems.count() > 0 && firstItems.first()->type() == DiagramItem::Type && secondItems.first()->type() == DiagramItem::Type && firstItems.first() != secondItems.first()) { DiagramItem *firstItem = qgraphicsitem_cast<DiagramItem *>(firstItems.first()); DiagramItem *secondItem = qgraphicsitem_cast<DiagramItem *>(secondItems.first()); if (firstItem->CheckEmployment()) { line = 0; return; } if (secondItem->CheckEmployment()) { line = 0; return; } Link *link = new Link(firstItem, secondItem); firstItem->addLink(link); secondItem->addLink(link); link->setZValue(-1000.0); addItem(link); link->updatePosition(); emit linkInserted(firstItem, secondItem, link); } myMode = MoveItem; } line = 0; QGraphicsScene::mouseReleaseEvent(mouseEvent); }