feat: drag connect nodes

This commit is contained in:
parker
2025-06-23 15:48:53 +01:00
parent 74da83fdfa
commit 0ad623407a
5 changed files with 30 additions and 1 deletions

View File

@@ -263,3 +263,13 @@ void Network::keyReleaseEvent(QKeyEvent *event)
highlightEdge(prevHoverItem_, false); highlightEdge(prevHoverItem_, false);
} }
} }
void Network::mouseReleaseEvent(QMouseEvent *event)
{
QList<QGraphicsItem*> hoverItems = view_->items(event->pos());
QGraphicsItem* hoverSocket = itemOfType<SocketGraphic>(hoverItems);
if(floatingEdge_ && hoverSocket)
{
socketClicked(static_cast<SocketGraphic*>(hoverSocket), event);
}
}

View File

@@ -62,4 +62,5 @@ private:
protected: protected:
void resizeEvent(QResizeEvent *event) override; void resizeEvent(QResizeEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
}; };

View File

@@ -34,6 +34,23 @@ void NetworkGraphicsView::initUI()
setViewportUpdateMode(ViewportUpdateMode::FullViewportUpdate); setViewportUpdateMode(ViewportUpdateMode::FullViewportUpdate);
} }
void NetworkGraphicsView::mouseReleaseEvent(QMouseEvent *event) {
// pass event to parent
QGraphicsView::mouseReleaseEvent(event);
if (parentWidget()) {
QMouseEvent *eventCopy = new QMouseEvent(
event->type(),
event->position(),
event->scenePosition(),
event->globalPosition(),
event->button(),
event->buttons(),
event->modifiers()
);
QCoreApplication::postEvent(parentWidget(), eventCopy);
}
}
void NetworkGraphicsView::mousePressEvent(QMouseEvent *event) void NetworkGraphicsView::mousePressEvent(QMouseEvent *event)
{ {

View File

@@ -20,6 +20,7 @@ private:
protected: protected:
void mouseMoveEvent(QMouseEvent *mouseEvent) override; void mouseMoveEvent(QMouseEvent *mouseEvent) override;
void mousePressEvent(QMouseEvent *event) override; void mousePressEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
void leftMousePress(QMouseEvent *event); void leftMousePress(QMouseEvent *event);
QGraphicsItem* getItemAtClick(QMouseEvent *event); QGraphicsItem* getItemAtClick(QMouseEvent *event);
void wheelEvent(QWheelEvent *event) override; void wheelEvent(QWheelEvent *event) override;

View File

@@ -75,7 +75,7 @@ SocketGraphic* NodeGraphic::getOutput(int indx) const
QRectF NodeGraphic::boundingRect() const QRectF NodeGraphic::boundingRect() const
{ {
QRectF boundRect = bodyRect_; QRectF boundRect = bodyRect_;
float padding = 10; float padding = 0;
boundRect.adjust(-padding, -padding, padding, padding); boundRect.adjust(-padding, -padding, padding, padding);
return boundRect; return boundRect;
} }