DiagramDesigner/diagramCavas/source/diagramEditor/editPanel.cpp

176 lines
5.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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)
{
if(info.bus_220_num != 0)
{
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);
}
}
_widgetLayout->addStretch();
}
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;
}