feat: destroy floating edge from emtpy click

This commit is contained in:
parker
2025-06-21 01:32:04 +01:00
parent b10f9322b2
commit 90dc2cccae
3 changed files with 39 additions and 14 deletions

View File

@@ -53,6 +53,23 @@ Network::Network(QWidget* parent)
mainLayout_->addWidget(view_);
}
void Network::leftMousePress(QMouseEvent *event)
{
QGraphicsItem* itemClicked = view_->itemAt(event->pos());
bool isSocket = itemClicked && typeid(*itemClicked)==typeid(SocketGraphic);
if(isSocket)
{
std::cout << "SOCKET!\n";
socketClicked(static_cast<SocketGraphic*>(itemClicked), event);
}
else
{
destroyFloatingEdge();
}
}
void Network::socketClicked(SocketGraphic* socket, QMouseEvent *event)
{
std::cout << "socket clicked\n";
@@ -65,6 +82,17 @@ void Network::socketClicked(SocketGraphic* socket, QMouseEvent *event)
}
}
void Network::destroyFloatingEdge()
{
if(floatingEdge_)
{
scene_->removeItem(floatingEdge_);
delete floatingEdge_;
floatingEdge_=nullptr;
}
}
void Network::mouseMoved(QMouseEvent *event)
{
@@ -80,12 +108,6 @@ void Network::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Escape)
{
// delete floating edge
if(floatingEdge_)
{
scene_->removeItem(floatingEdge_);
delete floatingEdge_;
floatingEdge_=nullptr;
}
destroyFloatingEdge();
}
}

View File

@@ -12,12 +12,14 @@ public:
Network(QWidget* parent = nullptr);
void socketClicked(SocketGraphic* socket, QMouseEvent *event);
void mouseMoved(QMouseEvent *event);
void leftMousePress(QMouseEvent *event);
private:
QLayout* mainLayout_;
NetworkGraphicsScene* scene_;
NetworkGraphicsView* view_;
FloatingEdgeGraphic* floatingEdge_=nullptr;
void keyPressEvent(QKeyEvent *event) override;
void destroyFloatingEdge();
protected:
};

View File

@@ -56,13 +56,14 @@ void NetworkGraphicsView::mousePressEvent(QMouseEvent *event)
void NetworkGraphicsView::leftMousePress(QMouseEvent *event)
{
QGraphicsItem* itemClicked = itemAt(event->pos());
bool isSocket = itemClicked && typeid(*itemClicked)==typeid(SocketGraphic);
if(isSocket)
{
std::cout << "SOCKET!\n";
network_->socketClicked(static_cast<SocketGraphic*>(itemClicked), event);
}
network_->leftMousePress(event);
// QGraphicsItem* itemClicked = itemAt(event->pos());
// bool isSocket = itemClicked && typeid(*itemClicked)==typeid(SocketGraphic);
// if(isSocket)
// {
// std::cout << "SOCKET!\n";
// network_->socketClicked(static_cast<SocketGraphic*>(itemClicked), event);
// }
}