diff --git a/include/graphicsItem/graphicsBaseItem.h b/include/graphicsItem/graphicsBaseItem.h index 06e924e..04550c5 100644 --- a/include/graphicsItem/graphicsBaseItem.h +++ b/include/graphicsItem/graphicsBaseItem.h @@ -299,18 +299,18 @@ public: // IPropertyGroupProvider - 默认返回空字符串(无分组),子类可重写 QString getPropertyGroup(const QString&) const override { return {}; } - virtual void createOperationCopy(); - virtual void removeOperationCopy(); - virtual void moveOperationCopy(const QPointF&); - virtual void rotateOperationCopy(const double&); - virtual void syncRotationDataFromParent(const double&); + virtual void createOperationCopy() override; + virtual void removeOperationCopy() override; + virtual void moveOperationCopy(const QPointF&) override; + virtual void rotateOperationCopy(const double&) override; + virtual void syncRotationDataFromParent(const double&) override; //多边形、线段等点选创建的对象需要的函数 virtual void addPoint(const QPointF&) {} virtual bool endDrawing() { return true; } protected: - virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange, const QVariant&); - virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent*); + virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange, const QVariant&) override; + virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent*) override; }; #endif diff --git a/include/graphicsItem/itemControlHandle.h b/include/graphicsItem/itemControlHandle.h index d5e77f8..d7ce2bf 100644 --- a/include/graphicsItem/itemControlHandle.h +++ b/include/graphicsItem/itemControlHandle.h @@ -1,11 +1,11 @@ #ifndef ITEMCONTROLHANDLE_H #define ITEMCONTROLHANDLE_H -#include +#include enum HandleType { - T_resize, //调整大小 + T_resize=50, //调整大小 T_rotate, //旋转 T_editShape //编辑形状 }; diff --git a/include/mainwindow.h b/include/mainwindow.h index 87ba2cd..2c06fd3 100644 --- a/include/mainwindow.h +++ b/include/mainwindow.h @@ -50,11 +50,11 @@ private slots: void onSignal_selectionChanged(); private: - QAction* SavePerspectiveAction = nullptr; - QWidgetAction* PerspectiveListAction = nullptr; - QComboBox* PerspectiveComboBox = nullptr; + QAction* m_pSavePerspectiveAction = nullptr; + QWidgetAction* m_pPerspectiveListAction = nullptr; + QComboBox* m_pPerspectiveComboBox = nullptr; - QUndoStack* m_pUndoStack; + QUndoStack* m_pUndoStack; Ui::CMainWindow *ui; diff --git a/include/util/baseSelector.h b/include/util/baseSelector.h index 2aa2094..f310b4a 100644 --- a/include/util/baseSelector.h +++ b/include/util/baseSelector.h @@ -16,19 +16,19 @@ enum SelectorType { ST_base = 0, //基本 ST_cerating, //创建 - ST_moving, //移动 - ST_editing, //顶点编辑 - ST_scaling, //缩放 + ST_moving, //移动 + ST_editing, //顶点编辑 + ST_scaling, //缩放 ST_rotation, //旋转 }; enum OperationMode { OM_none = 0, - OM_move, //移动 + OM_move, //移动 OM_create, //创建 - OM_edit, //顶点编辑 - OM_scale, //缩放 + OM_edit, //顶点编辑 + OM_scale, //缩放 OM_rotate, //旋转 }; @@ -47,8 +47,8 @@ public: virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*, DesignerScene*); SelectorType getSelectorType() { return m_type; } - //void setOperationMode(OperationMode m) { m_opMode = m; } - OperationMode getOperationMode() { return ms_opMode; } + // void setOperationMode(OperationMode m) { m_opMode = m; } + // OperationMode getOperationMode() { return s_opMode; } void setCursor(DesignerScene*, const QCursor&); @@ -56,12 +56,12 @@ signals: void setWorkingSelector(SelectorType); protected: - //静态变量,用于不同类型selector间的成员共享 - static OperationMode ms_opMode; - static QPointF ms_ptMouseDown; - static QPointF ms_ptMouseLast; - static double ms_dAngleMouseDownToItem; //鼠标按下时其位置和item中心点形成的夹角 - static int ms_nDragHandle; //当前抓取的控制点 + // 静态变量,用于不同类型selector间的成员共享 + // static OperationMode s_opMode; + static QPointF s_ptMouseDown; + static QPointF s_ptMouseLast; + static double s_dAngleMouseDownToItem; //鼠标按下时其位置和item中心点形成的夹角 + static int s_nDragHandle; //当前抓取的控制点 SelectorType m_type; diff --git a/include/util/creatingSelector.h b/include/util/creatingSelector.h index 39830fb..4e0ba6a 100644 --- a/include/util/creatingSelector.h +++ b/include/util/creatingSelector.h @@ -38,7 +38,6 @@ private: CreatingMethod m_creatingMethod; GraphicsItemType m_creatingItemType; GraphicsBaseItem* m_pCreatingItem; - //QPointF m_scalBasePoint; }; #endif diff --git a/include/util/scalingSelector.h b/include/util/scalingSelector.h index e12333f..7c544cd 100644 --- a/include/util/scalingSelector.h +++ b/include/util/scalingSelector.h @@ -24,7 +24,7 @@ public: void mouseReleaseEvent(QGraphicsSceneMouseEvent*, DesignerScene*); private: - QPointF m_scalBasePoint; + QPointF m_scaleBasePoint; }; #endif diff --git a/include/util/selectorManager.h b/include/util/selectorManager.h index d65eeda..0a4622a 100644 --- a/include/util/selectorManager.h +++ b/include/util/selectorManager.h @@ -42,17 +42,18 @@ private: CGarbo() {}; ~CGarbo() { - if (m_pInstance != nullptr) + if (s_pInstance != nullptr) { //qDebug()<<"goodbye CGarbo"; - delete m_pInstance; - m_pInstance = nullptr; + delete s_pInstance; + s_pInstance = nullptr; } } }; private: - static SelectorManager* m_pInstance; + static SelectorManager* s_pInstance; + SelectorType m_curSelector; QVector m_vecSelectors; }; diff --git a/source/util/baseSelector.cpp b/source/util/baseSelector.cpp index 22f3248..80a5379 100644 --- a/source/util/baseSelector.cpp +++ b/source/util/baseSelector.cpp @@ -4,10 +4,10 @@ #include #include -QPointF BaseSelector::ms_ptMouseDown(0.0,0.0); -QPointF BaseSelector::ms_ptMouseLast(0.0,0.0); -double BaseSelector::ms_dAngleMouseDownToItem = 0.0; -int BaseSelector::ms_nDragHandle = 0; +QPointF BaseSelector::s_ptMouseDown(0.0, 0.0); +QPointF BaseSelector::s_ptMouseLast(0.0, 0.0); +double BaseSelector::s_dAngleMouseDownToItem = 0.0; +int BaseSelector::s_nDragHandle = 0; BaseSelector::BaseSelector(QObject *parent) : QObject(parent) @@ -26,8 +26,8 @@ void BaseSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerScen if (event->button() != Qt::LeftButton) return; - ms_ptMouseDown = event->scenePos(); - ms_ptMouseLast = event->scenePos(); + s_ptMouseDown = event->scenePos(); + s_ptMouseLast = event->scenePos(); if(!m_bHoverOnHandel) scene->callParentEvent(event); //此处是通过触发QGraphicsScene的事件函数来取消所有被选中item的选中状态 @@ -41,27 +41,27 @@ void BaseSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerScen if(item) { //需要增加当前是否点击在控制点的判断函数 - ms_nDragHandle = item->collidesWithHandle(event->scenePos()); - if(ms_nDragHandle != H_none && ms_nDragHandle <= H_left) //在缩放控制点上 + s_nDragHandle = item->collidesWithHandle(event->scenePos()); + if(s_nDragHandle != H_none && s_nDragHandle <= H_left) //在缩放控制点上 { m_opMode = OM_scale; emit setWorkingSelector(ST_scaling); } - else if(ms_nDragHandle >= H_rotate_leftTop && ms_nDragHandle <= H_rotate_leftBottom) //在旋转控制点上 + else if(s_nDragHandle >= H_rotate_leftTop && s_nDragHandle <= H_rotate_leftBottom) //在旋转控制点上 { m_opMode = OM_rotate; //计算夹角 QPointF originPoint = item->mapToScene(item->boundingRect().center()); - double dLengthY = ms_ptMouseLast.y() - originPoint.y(); - double dLengthX = ms_ptMouseLast.x() - originPoint.x(); - ms_dAngleMouseDownToItem = atan2(dLengthY, dLengthX) * 180 / M_PI; + double dLengthY = s_ptMouseLast.y() - originPoint.y(); + double dLengthX = s_ptMouseLast.x() - originPoint.x(); + s_dAngleMouseDownToItem = atan2(dLengthY, dLengthX) * 180 / M_PI; // if(atan2(dLengthY, dLengthX) < 0) - // ms_dAngleMouseDownToItem += 360.0; + // s_dAngleMouseDownToItem += 360.0; //创建副本 item->createOperationCopy(); emit setWorkingSelector(ST_rotation); } - else if(ms_nDragHandle > H_rotate_leftBottom) //编辑控制点上 + else if(s_nDragHandle > H_rotate_leftBottom) //编辑控制点上 { m_opMode = OM_edit; setCursor(scene, Qt::ClosedHandCursor); @@ -102,7 +102,7 @@ void BaseSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerScen void BaseSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene) { - ms_ptMouseLast = event->scenePos(); + s_ptMouseLast = event->scenePos(); QList items = scene->selectedItems(); @@ -111,7 +111,7 @@ void BaseSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerScene AbstractShape* item = qgraphicsitem_cast(items.first()); if(item) { - if(ms_nDragHandle == H_none) + if(s_nDragHandle == H_none) { //设置光标样式 int nHandle = item->collidesWithHandle(event->scenePos()); @@ -288,7 +288,7 @@ void BaseSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, DesignerSc m_opMode = OM_none; m_bHoverOnHandel = false; - ms_nDragHandle = H_none; + s_nDragHandle = H_none; scene->callParentEvent(event); } diff --git a/source/util/creatingSelector.cpp b/source/util/creatingSelector.cpp index eb70a4f..cbccdf2 100644 --- a/source/util/creatingSelector.cpp +++ b/source/util/creatingSelector.cpp @@ -22,8 +22,8 @@ void CreatingSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, Designer if (event->button() != Qt::LeftButton) return; - ms_ptMouseDown = event->scenePos(); - ms_ptMouseLast = event->scenePos(); + s_ptMouseDown = event->scenePos(); + s_ptMouseLast = event->scenePos(); if(m_pCreatingItem == nullptr) { @@ -61,19 +61,19 @@ void CreatingSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, Designer if(m_creatingMethod == CM_drag) { - ms_ptMouseDown += QPoint(2, 2); - ms_nDragHandle = H_rightBottom; + s_ptMouseDown += QPoint(2, 2); + s_nDragHandle = H_rightBottom; } else if(m_creatingMethod == CM_click) - m_pCreatingItem->addPoint(ms_ptMouseDown); + m_pCreatingItem->addPoint(s_ptMouseDown); } } if(m_pCreatingItem && m_creatingMethod == CM_click) { //创建时添加了第一个点,紧接着再次添加第二点,然后从第二个点开始进行移动绘制 - m_pCreatingItem->addPoint(ms_ptMouseDown); - ms_nDragHandle = m_pCreatingItem->handleCount(); + m_pCreatingItem->addPoint(s_ptMouseDown); + s_nDragHandle = m_pCreatingItem->handleCount(); } } @@ -81,14 +81,14 @@ void CreatingSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, Designer void CreatingSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene) { setCursor(scene, Qt::CrossCursor); - ms_ptMouseLast = event->scenePos(); + s_ptMouseLast = event->scenePos(); if (m_pCreatingItem && m_creatingMethod == CM_drag) { /*if(m_scalBasePoint.isNull()) //基准点不能采用临时变量,因为handle的坐标也在不断变化,计算会出现问题 { - m_scalBasePoint = m_pCreatingItem->getSymmetricPointPos(ms_nDragHandle); qDebug() << m_scalBasePoint; + m_scalBasePoint = m_pCreatingItem->getSymmetricPointPos(s_nDragHandle); qDebug() << m_scalBasePoint; if(m_scalBasePoint.x() == 0) m_scalBasePoint.setX(1); if(m_scalBasePoint.y() == 0) @@ -97,18 +97,18 @@ void CreatingSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerS QPointF scaleBasePoint = m_pCreatingItem->boundingRect().topLeft(); //计算缩放倍数 - QPointF iniDelta = m_pCreatingItem->mapFromScene(ms_ptMouseDown) - scaleBasePoint; - QPointF lastDelta = m_pCreatingItem->mapFromScene(ms_ptMouseLast) - scaleBasePoint; + QPointF iniDelta = m_pCreatingItem->mapFromScene(s_ptMouseDown) - scaleBasePoint; + QPointF lastDelta = m_pCreatingItem->mapFromScene(s_ptMouseLast) - scaleBasePoint; double sx = lastDelta.x() / iniDelta.x(); double sy = lastDelta.y() / iniDelta.y(); - m_pCreatingItem->resize(ms_nDragHandle, sx, sy, scaleBasePoint); + m_pCreatingItem->resize(s_nDragHandle, sx, sy, scaleBasePoint); } else if (m_pCreatingItem && m_creatingMethod == CM_click) { - if(ms_nDragHandle > H_left) + if(s_nDragHandle > H_left) { - m_pCreatingItem->editShape(ms_nDragHandle, ms_ptMouseLast); + m_pCreatingItem->editShape(s_nDragHandle, s_ptMouseLast); } } } @@ -117,19 +117,19 @@ void CreatingSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, Design { if (m_pCreatingItem && m_creatingMethod == CM_drag) { - if (event->scenePos() == (ms_ptMouseDown - QPoint(2, 2))) //最小拖动范围 + if (event->scenePos() == (s_ptMouseDown - QPoint(2, 2))) //最小拖动范围 { m_pCreatingItem->setSelected(false); scene->removeItem(m_pCreatingItem); delete m_pCreatingItem; } - else if (ms_ptMouseLast != ms_ptMouseDown) + else if (s_ptMouseLast != s_ptMouseDown) { m_pCreatingItem->updateCoordinate(); emit scene->signalAddItem(m_pCreatingItem); } - ms_nDragHandle = H_none; + s_nDragHandle = H_none; m_pCreatingItem = nullptr; //m_scalBasePoint = QPointF(); setCursor(scene, Qt::ArrowCursor); @@ -146,7 +146,7 @@ void CreatingSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, Design delete m_pCreatingItem; } - ms_nDragHandle = H_none; + s_nDragHandle = H_none; m_pCreatingItem = nullptr; setCursor(scene, Qt::ArrowCursor); emit setWorkingSelector(ST_base); diff --git a/source/util/editingSelector.cpp b/source/util/editingSelector.cpp index a42d9b6..eef3dfa 100644 --- a/source/util/editingSelector.cpp +++ b/source/util/editingSelector.cpp @@ -20,16 +20,16 @@ void EditingSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerS void EditingSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene) { - ms_ptMouseLast = event->scenePos(); + s_ptMouseLast = event->scenePos(); QList items = scene->selectedItems(); if (items.count() == 1) { GraphicsBaseItem* item = qgraphicsitem_cast(items.first()); if(item) { - if(ms_nDragHandle > H_left) + if(s_nDragHandle > H_left) { - item->editShape(ms_nDragHandle, ms_ptMouseLast); + item->editShape(s_nDragHandle, s_ptMouseLast); } } } @@ -41,13 +41,13 @@ void EditingSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, Designe if (items.count() == 1) { GraphicsBaseItem* item = qgraphicsitem_cast(items.first()); - if(item && ms_ptMouseLast != ms_ptMouseDown) + if(item && s_ptMouseLast != s_ptMouseDown) { item->updateCoordinate(); } } - ms_nDragHandle = H_none; + s_nDragHandle = H_none; setCursor(scene, Qt::ArrowCursor); emit setWorkingSelector(ST_base); } diff --git a/source/util/movingSelector.cpp b/source/util/movingSelector.cpp index 3a21621..15a0b52 100644 --- a/source/util/movingSelector.cpp +++ b/source/util/movingSelector.cpp @@ -20,14 +20,14 @@ void MovingSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerSc void MovingSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene) { - ms_ptMouseLast = event->scenePos(); + s_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); + item->moveOperationCopy(s_ptMouseLast - s_ptMouseDown); } } diff --git a/source/util/rotationSelector.cpp b/source/util/rotationSelector.cpp index 28e197d..e0f820c 100644 --- a/source/util/rotationSelector.cpp +++ b/source/util/rotationSelector.cpp @@ -20,7 +20,7 @@ void RotationSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, Designer void RotationSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene) { - ms_ptMouseLast = event->scenePos(); + s_ptMouseLast = event->scenePos(); QList items = scene->selectedItems(); if (items.count() == 1) { @@ -29,13 +29,13 @@ void RotationSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerS { //计算夹角 QPointF originPoint = item->mapToScene(item->boundingRect().center()); - double dLengthY = ms_ptMouseLast.y() - originPoint.y(); - double dLengthX = ms_ptMouseLast.x() - originPoint.x(); + double dLengthY = s_ptMouseLast.y() - originPoint.y(); + double dLengthX = s_ptMouseLast.x() - originPoint.x(); double dAngleMouseToItem = atan2(dLengthY, dLengthX) * 180 / M_PI; // if(atan2(dLengthY, dLengthX) < 0) // dAngleMouseToItem += 360.0; - double rotationAngle = item->rotation() + (dAngleMouseToItem - ms_dAngleMouseDownToItem); + double rotationAngle = item->rotation() + (dAngleMouseToItem - s_dAngleMouseDownToItem); //让角度保持在正负180的区间,也就是上下两个半圈,这样易于象限判断 if (rotationAngle > 180) rotationAngle -= 360; @@ -61,7 +61,7 @@ void RotationSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, Design } - ms_nDragHandle = H_none; + s_nDragHandle = H_none; setCursor(scene, Qt::ArrowCursor); emit setWorkingSelector(ST_base); } diff --git a/source/util/scalingSelector.cpp b/source/util/scalingSelector.cpp index ceae42f..66d6ffc 100644 --- a/source/util/scalingSelector.cpp +++ b/source/util/scalingSelector.cpp @@ -7,7 +7,7 @@ ScalingSelector::ScalingSelector(QObject *parent) : BaseSelector(parent) { m_type = ST_scaling; - m_scalBasePoint = QPointF(); + m_scaleBasePoint = QPointF(); } ScalingSelector::~ScalingSelector() { @@ -21,31 +21,31 @@ void ScalingSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerS void ScalingSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene) { - ms_ptMouseLast = event->scenePos(); + s_ptMouseLast = event->scenePos(); QList items = scene->selectedItems(); if (items.count() == 1) { AbstractShape* item = qgraphicsitem_cast(items.first()); if(item) { - if(ms_nDragHandle != H_none) + if(s_nDragHandle != H_none) { - if(m_scalBasePoint.isNull()) //基准点不能采用临时变量,因为handle的坐标也在不断变化,计算会出现问题 + if(m_scaleBasePoint.isNull()) //基准点不能采用临时变量,因为handle的坐标也在不断变化,计算会出现问题 { - m_scalBasePoint = item->getSymmetricPointPos(ms_nDragHandle); - if(m_scalBasePoint.x() == 0) - m_scalBasePoint.setX(1); - if(m_scalBasePoint.y() == 0) - m_scalBasePoint.setY(1); + m_scaleBasePoint = item->getSymmetricPointPos(s_nDragHandle); + if(m_scaleBasePoint.x() == 0) + m_scaleBasePoint.setX(1); + if(m_scaleBasePoint.y() == 0) + m_scaleBasePoint.setY(1); } //计算缩放倍数 - QPointF iniDelta = item->mapFromScene(ms_ptMouseDown) - m_scalBasePoint; - QPointF lastDelta = item->mapFromScene(ms_ptMouseLast) - m_scalBasePoint; + QPointF iniDelta = item->mapFromScene(s_ptMouseDown) - m_scaleBasePoint; + QPointF lastDelta = item->mapFromScene(s_ptMouseLast) - m_scaleBasePoint; double sx = lastDelta.x() / iniDelta.x(); double sy = lastDelta.y() / iniDelta.y(); - item->resize(ms_nDragHandle, sx, sy, m_scalBasePoint); + item->resize(s_nDragHandle, sx, sy, m_scaleBasePoint); } } } @@ -57,14 +57,14 @@ void ScalingSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, Designe if (items.count() == 1) { AbstractShape* item = qgraphicsitem_cast(items.first()); - if(item && ms_ptMouseLast != ms_ptMouseDown) + if(item && s_ptMouseLast != s_ptMouseDown) { item->updateCoordinate(); } } - ms_nDragHandle = H_none; - m_scalBasePoint = QPointF(); + s_nDragHandle = H_none; + m_scaleBasePoint = QPointF(); setCursor(scene, Qt::ArrowCursor); emit setWorkingSelector(ST_base); } diff --git a/source/util/selectorManager.cpp b/source/util/selectorManager.cpp index 182a480..471fae7 100644 --- a/source/util/selectorManager.cpp +++ b/source/util/selectorManager.cpp @@ -5,7 +5,7 @@ #include "util/scalingSelector.h" #include "util/editingSelector.h" -SelectorManager* SelectorManager::m_pInstance = nullptr; +SelectorManager* SelectorManager::s_pInstance = nullptr; SelectorManager::SelectorManager(QObject *parent) : QObject(parent) @@ -43,11 +43,11 @@ SelectorManager::~SelectorManager() SelectorManager* SelectorManager::getInstance() { - if(m_pInstance == nullptr) + if(s_pInstance == nullptr) { - m_pInstance = new SelectorManager(); + s_pInstance = new SelectorManager(); } - return m_pInstance; + return s_pInstance; } BaseSelector* SelectorManager::getWorkingSelector()