#include "util/movingSelector.h" #include "graphicsItem/itemPort.h" #include #include #include #include "graphicsItem/electricConnectLineItem.h" MovingSelector::MovingSelector(FixedPortsModel* model,QObject *parent) : BaseSelector(model,parent) { m_type = ST_moving; } MovingSelector::~MovingSelector() { } void MovingSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene) { ms_ptMouseLast = event->scenePos(); QList items = scene->selectedItems(); updateConnectLine(items); } void MovingSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene) { ms_ptMouseLast = event->scenePos(); QList items = scene->selectedItems(); for(int n = 0; n < items.size(); n++) { AbstractShape* item = qgraphicsitem_cast(items.at(n)); if(item) item->moveOperationCopy(ms_ptMouseLast - ms_ptMouseDown); } } void MovingSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene) { QList items = scene->selectedItems(); for(int n = 0; n < items.size(); n++) { AbstractShape* item = qgraphicsitem_cast(items.at(n)); if(item) item->removeOperationCopy(); } updateConnectLine(items); setCursor(scene, Qt::ArrowCursor); scene->callParentEvent(event); emit setWorkingSelector(ST_base); } void MovingSelector::updateConnectLine(QList lst) { for(auto iter:lst) //更新连接线 { auto item = dynamic_cast(iter); if(item) { if(item->getItemType() != GIT_link) { QUuid nId = item->itemId(); for(auto pPort:item->getPorts()) { if(pPort->connected()) { auto pConnect = pPort->getConnectPtr(); pConnect->updateConnection(nId,pPort->scenePos()); } } } } } }