2025-05-30 16:28:51 +08:00
|
|
|
|
#include <QVBoxLayout>
|
|
|
|
|
|
#include <QGraphicsWidget>
|
|
|
|
|
|
#include <QGraphicsGridLayout>
|
|
|
|
|
|
#include <QPushButton>
|
|
|
|
|
|
#include <QGraphicsProxyWidget>
|
|
|
|
|
|
#include "diagramEditor/editPanel.h"
|
|
|
|
|
|
#include "diagramEditor/editScene.h"
|
|
|
|
|
|
#include "diagramEditor/editView.h"
|
|
|
|
|
|
#include "diagramEditor/editRowData.h"
|
|
|
|
|
|
#include "diagramEditor/editMainRect.h"
|
|
|
|
|
|
#include "diagramEditor/editBus.h"
|
|
|
|
|
|
#include "global.h"
|
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
|
|
|
|
|
|
|
EditPanel::EditPanel(QWidget *parent)
|
|
|
|
|
|
: QWidget(parent)
|
|
|
|
|
|
{
|
|
|
|
|
|
_maxWidth = 0;
|
|
|
|
|
|
_maxHeight = 0;
|
|
|
|
|
|
_curRow = 0;
|
|
|
|
|
|
_layout = new QVBoxLayout(this);
|
|
|
|
|
|
m_pEditScene = new EditScene(this);
|
|
|
|
|
|
//设置场景大小.前两个参数为scene的坐标远点,设置到view的中心点后,无论view如何缩放,secne的坐标原点都不会动,方便后续的位置计算
|
|
|
|
|
|
//m_pEditScene->setSceneRect(-g_dGriaphicsScene_Width / 2, -g_dGriaphicsScene_Height / 2, g_dGriaphicsScene_Width, g_dGriaphicsScene_Height);
|
|
|
|
|
|
m_pEditScene->setSceneRect(0, 0, g_dGriaphicsScene_Width*4, g_dGriaphicsScene_Height*4);
|
|
|
|
|
|
|
|
|
|
|
|
m_pEditView = new EditView(this);
|
|
|
|
|
|
m_pEditView->setScene(m_pEditScene);
|
|
|
|
|
|
_layout->addWidget(m_pEditView);
|
|
|
|
|
|
initial();
|
|
|
|
|
|
setStyleSheet("backGround-color:rgb(112,128,144);");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
EditPanel::~EditPanel()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void EditPanel::initByWizardInfo(DiagramEditorWizardInfo info)
|
|
|
|
|
|
{
|
2025-07-22 12:03:43 +08:00
|
|
|
|
/*if(info.bus_220_num != 0)
|
2025-05-30 16:28:51 +08:00
|
|
|
|
{
|
|
|
|
|
|
if(info.bus_220_num == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
QString pre = "220KVⅠ母分";
|
|
|
|
|
|
QMap<int,EditBaseStruct*> mapBus; //母线
|
|
|
|
|
|
QMap<int,EditBaseStruct*> mapRowData; //一段母线对应一行数据
|
|
|
|
|
|
int colCount = 0;
|
|
|
|
|
|
|
|
|
|
|
|
QGraphicsLinearLayout* layoutBus = new QGraphicsLinearLayout();
|
|
|
|
|
|
QGraphicsLinearLayout* layoutRowData = new QGraphicsLinearLayout();
|
|
|
|
|
|
layoutBus->setSpacing(40);
|
|
|
|
|
|
layoutRowData->setSpacing(20);
|
|
|
|
|
|
|
|
|
|
|
|
int nPer = 0;
|
|
|
|
|
|
int nLeft = 0;
|
|
|
|
|
|
|
|
|
|
|
|
nPer = info.bus_220_circuit/info.bus_220_division;
|
|
|
|
|
|
nLeft = info.bus_220_circuit%info.bus_220_division;
|
|
|
|
|
|
for(int i = 0; i <info.bus_220_division;++i){
|
|
|
|
|
|
EditBus* pBus = new EditBus(_mainWidget);
|
|
|
|
|
|
EditRowData* rowData = new EditRowData(_mainWidget);
|
|
|
|
|
|
pBus->setName(pre+QString::number(i+1));
|
|
|
|
|
|
layoutBus->addItem(pBus);
|
|
|
|
|
|
layoutRowData->addItem(rowData);
|
|
|
|
|
|
layoutBus->setMaximumHeight(g_dEditorItem_Height);
|
|
|
|
|
|
layoutRowData->setMaximumHeight(g_dEditorItem_Height);
|
|
|
|
|
|
|
|
|
|
|
|
int nMinWidth = -1; //每个结构大小
|
|
|
|
|
|
if(nLeft > 0){
|
|
|
|
|
|
nMinWidth = rowData->addItems(nPer+1);
|
|
|
|
|
|
nLeft -= 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
else{
|
|
|
|
|
|
nMinWidth = rowData->addItems(nPer);
|
|
|
|
|
|
}
|
|
|
|
|
|
if(nMinWidth == -1)
|
|
|
|
|
|
pBus->setMinimumWidth(g_dEditorItem_Width);
|
|
|
|
|
|
else
|
|
|
|
|
|
pBus->setMinimumWidth(nMinWidth);
|
|
|
|
|
|
|
|
|
|
|
|
colCount += 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
layoutBus->addStretch();
|
|
|
|
|
|
layoutRowData->addStretch();
|
|
|
|
|
|
_widgetLayout->addItem(layoutBus);
|
|
|
|
|
|
_widgetLayout->addItem(layoutRowData);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-07-22 12:03:43 +08:00
|
|
|
|
_widgetLayout->addStretch();*/
|
2025-05-30 16:28:51 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void EditPanel::resizeEvent(QResizeEvent* e)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void EditPanel::onAddCLicked()
|
|
|
|
|
|
{
|
|
|
|
|
|
/*EditRowData* row = new EditRowData(_mainWidget);
|
|
|
|
|
|
connect(row,&EditRowData::widthChanged,this,&EditPanel::onWidthChanged);
|
|
|
|
|
|
int nRow = _widgetLayout->rowCount();
|
|
|
|
|
|
_widgetLayout->addItem(row,nRow,1);
|
|
|
|
|
|
_widgetLayout->removeItem(m_addBtnPro);
|
|
|
|
|
|
_widgetLayout->addItem(m_addBtnPro,nRow,0);
|
|
|
|
|
|
_widgetLayout->setAlignment(m_addBtnPro,Qt::AlignCenter);
|
|
|
|
|
|
_widgetLayout->setColumnMaximumWidth(1,g_dEditorItem_Width);
|
|
|
|
|
|
_widgetLayout->setRowMaximumHeight(nRow,g_dEditorItem_Height);
|
|
|
|
|
|
_widgetLayout->setColumnMinimumWidth(1,g_dEditorItem_Width);
|
|
|
|
|
|
_widgetLayout->setRowMinimumHeight(nRow,g_dEditorItem_Height);
|
|
|
|
|
|
|
|
|
|
|
|
_lstData.append(row);
|
|
|
|
|
|
int height = calHeight();
|
|
|
|
|
|
if(height > _maxHeight){
|
|
|
|
|
|
QRectF rec = m_pEditScene->itemsBoundingRect();
|
|
|
|
|
|
if(rec.width() < _maxWidth)
|
|
|
|
|
|
m_pEditScene->setSceneRect(rec.x(),rec.y(),_maxWidth,height);
|
|
|
|
|
|
else
|
|
|
|
|
|
m_pEditScene->setSceneRect(rec); // 强制更新场景尺寸
|
|
|
|
|
|
m_pEditView->viewport()->update();
|
|
|
|
|
|
_maxHeight = height;
|
|
|
|
|
|
}
|
|
|
|
|
|
qDebug()<<m_pEditScene->itemsBoundingRect();*/
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void EditPanel::onWidthChanged(int width)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(_maxWidth < width)
|
|
|
|
|
|
{
|
|
|
|
|
|
_maxWidth = width;
|
|
|
|
|
|
int x = _mainWidget->geometry().width();
|
|
|
|
|
|
int y = _mainWidget->geometry().y();
|
|
|
|
|
|
_mainWidget->setGeometry(x,y,_maxWidth,_maxHeight);
|
|
|
|
|
|
//m_pEditScene->setSceneRect(m_pEditScene->itemsBoundingRect());
|
|
|
|
|
|
m_pEditScene->setSceneRect(x,y,_maxWidth,_maxHeight);
|
|
|
|
|
|
m_pEditView->viewport()->update();
|
|
|
|
|
|
//qDebug()<<m_pEditScene->sceneRect();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void EditPanel::initial()
|
|
|
|
|
|
{
|
|
|
|
|
|
_mainWidget = new EditMainRect;
|
|
|
|
|
|
_widgetLayout = new QGraphicsLinearLayout(Qt::Vertical);
|
|
|
|
|
|
_widgetLayout->setSpacing(6);
|
|
|
|
|
|
_mainWidget->setLayout(_widgetLayout);
|
|
|
|
|
|
m_pEditScene->addItem(_mainWidget);
|
|
|
|
|
|
_mainWidget->setGeometry(m_pEditScene->sceneRect());
|
|
|
|
|
|
_maxWidth = _mainWidget->rect().width();
|
|
|
|
|
|
_maxHeight = _mainWidget->rect().height();
|
|
|
|
|
|
m_pEditView->centerOn(0,0);
|
|
|
|
|
|
|
|
|
|
|
|
// 添加主按钮
|
|
|
|
|
|
/*QPushButton* m_addBtn = new QPushButton("Add Row");
|
|
|
|
|
|
m_addBtnPro = new QGraphicsProxyWidget;
|
|
|
|
|
|
m_addBtnPro->setWidget(m_addBtn);
|
|
|
|
|
|
_widgetLayout->addItem(m_addBtnPro,0,0);
|
|
|
|
|
|
_widgetLayout->setAlignment(m_addBtnPro,Qt::AlignCenter);
|
|
|
|
|
|
_widgetLayout->activate();
|
|
|
|
|
|
_widgetLayout->setColumnMaximumWidth(0,g_dEditorItem_Width);
|
|
|
|
|
|
_widgetLayout->setRowMaximumHeight(0,g_dEditorItem_Height);
|
|
|
|
|
|
|
|
|
|
|
|
connect(m_addBtn,&QPushButton::clicked,this,&EditPanel::onAddCLicked);*/
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int EditPanel::calHeight()
|
|
|
|
|
|
{
|
|
|
|
|
|
int height = 0;
|
|
|
|
|
|
for(auto &data:_lstData)
|
|
|
|
|
|
{
|
|
|
|
|
|
height += data->rect().height()+6+18;
|
|
|
|
|
|
}
|
|
|
|
|
|
height += m_addBtnPro->rect().height();
|
|
|
|
|
|
return height;
|
|
|
|
|
|
}
|