#include #include "baseDrawingPanel.h" #include #include #include #include "designerView.h" #include "graphicsDataModel/fixedPortsModel.h" #include "graphicsItem/graphicsBaseItem.h" #include "util/selectorManager.h" #include "statusBar.h" #include "powerEntity.h" #include "topologyManager.h" BaseDrawingPanel::BaseDrawingPanel(PowerEntity* pEntity,QWidget *parent,DiagramMode mode) : QWidget(parent) ,_pModel(nullptr) ,_mode(mode) ,_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, g_dGriaphicsScene_Width*4, g_dGriaphicsScene_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); m_pStatusBar = new StatusBar(this); connect(m_pGraphicsView,&DesignerView::onScaleChanged,m_pStatusBar,&StatusBar::onScaleLevelChanged); QVBoxLayout *verticalLayout = new QVBoxLayout(this); verticalLayout->addWidget(m_pGraphicsView); verticalLayout->addWidget(m_pStatusBar); verticalLayout->setContentsMargins(0, 0, 0, 0); // 左,上,右,下 verticalLayout->setSpacing(0); // 部件之间的间距 } BaseDrawingPanel::~BaseDrawingPanel() { if(_pModel) delete _pModel; } QGraphicsScene* BaseDrawingPanel::getQGraphicsScene() { return m_pGraphicsView->scene(); } DesignerScene* BaseDrawingPanel::getDesignerScene() { return m_pGraphicsScene; } SelectorManager* BaseDrawingPanel::selectorManager() const { if(m_pSelectorManager) return m_pSelectorManager; else return NULL; }