DiagramDesigner/diagramCavas/source/baseDrawingPanel.cpp

93 lines
2.9 KiB
C++
Raw Normal View History

2026-03-23 11:06:17 +08:00
#include <QJsonArray>
#include "baseDrawingPanel.h"
#include <QMessageBox>
#include <QCloseEvent>
#include "designerView.h"
#include "graphicsDataModel/fixedPortsModel.h"
#include "graphicsItem/graphicsBaseItem.h"
#include "util/selectorManager.h"
#include "statusBar.h"
#include "powerEntity.h"
#include "diagramCavas.h"
#include "topologyManager.h"
#include "basePannelPropertyProxy.h"
#include "common/core_model/constants.h"
BaseDrawingPanel::BaseDrawingPanel(PowerEntity* pEntity,QWidget *parent,DiagramMode mode)
: QWidget(parent)
,_pModel(nullptr)
,_mode(mode)
,_pEntity(nullptr)
,_verticalLayout(nullptr)
,_horizontalLayout(nullptr)
,_hSplitter(nullptr)
{
_pEntity = pEntity;
_pModel = new FixedPortsModel(pEntity);
_pModel->setTopWidget(this);
m_pSelectorManager = new SelectorManager(_pModel,this);
m_pGraphicsScene = new DesignerScene(_pModel,this);
//设置场景大小.前两个参数为scene的坐标远点设置到view的中心点后无论view如何缩放secne的坐标原点都不会动方便后续的位置计算
m_pGraphicsScene->setSceneRect(0,0, Constants::SCENE_WIDTH*4, Constants::SCENE_HEIGHT*4);
m_pGraphicsScene->setGridVisible(true);
m_pGraphicsView = new DesignerView(this);
m_pGraphicsView->setScene(m_pGraphicsScene);
m_pGraphicsView->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
m_pGraphicsScene->setView(m_pGraphicsView);
_pModel->setScene(m_pGraphicsScene);
connect(m_pGraphicsScene, &DesignerScene::selectionChanged, _pModel, &FixedPortsModel::onSelectionChanged);
m_pStatusBar = new StatusBar(this);
m_pStatusBar->setMaximumHeight(25);
connect(m_pGraphicsView,&DesignerView::onScaleChanged,m_pStatusBar,&StatusBar::onScaleLevelChanged);
_horizontalLayout = new QHBoxLayout();
//_horizontalLayout->addWidget(m_pGraphicsView);
_horizontalLayout->setContentsMargins(0, 0, 0, 0);
_horizontalLayout->setSpacing(0);
_hSplitter = new QSplitter(Qt::Horizontal);
_hSplitter->setHandleWidth(2); // 设置分割条宽度
_hSplitter->addWidget(m_pGraphicsView);
_horizontalLayout->addWidget(_hSplitter);
_verticalLayout = new QVBoxLayout(this);
_verticalLayout->addLayout(_horizontalLayout);
_verticalLayout->addWidget(m_pStatusBar);
_verticalLayout->setContentsMargins(0, 0, 0, 0);
_verticalLayout->setSpacing(0);
_pPropertyProxy = new BasePannelPropertyProxy(this);
}
BaseDrawingPanel::~BaseDrawingPanel()
{
//if(_pModel)
// delete _pModel;
}
QGraphicsScene* BaseDrawingPanel::getQGraphicsScene()
{
return m_pGraphicsView->scene();
}
DesignerScene* BaseDrawingPanel::getDesignerScene()
{
return m_pGraphicsScene;
}
BasePannelPropertyProxy* BaseDrawingPanel::getPropertyProxy()
{
return _pPropertyProxy.data();
}
SelectorManager* BaseDrawingPanel::selectorManager() const
{
if(m_pSelectorManager)
return m_pSelectorManager;
else
return NULL;
}