add transformer setting ui
This commit is contained in:
parent
04dd9af60e
commit
064c73af08
|
|
@ -380,14 +380,7 @@ struct gridInfo //grid
|
|||
QMap<QString,zoneInfo> zoneMap;
|
||||
};*/
|
||||
//===================组态编辑器使用================
|
||||
struct DiagramEditorWizardInfo //组态编辑向导信息
|
||||
{
|
||||
/*int nIndex = 0;
|
||||
double dVoltage = 0;
|
||||
int nLineType = 1; //1单母线,2双母线
|
||||
QMap<bool,int> mapDivide; //母线划分数,false为1母线,true为2母
|
||||
int connectType = 0;*/ //接线方式,1为分段连接
|
||||
};
|
||||
const int g_transformerLevel = 999; //层级结构中变压器所处层级
|
||||
|
||||
struct DiagramEditorWizardBusInfo //组态编辑母线信息
|
||||
{
|
||||
|
|
@ -400,6 +393,12 @@ struct DiagramEditorWizardBusInfo //组态编辑母线信息
|
|||
bool bChanged = false; //是否改变
|
||||
};
|
||||
|
||||
enum class TransformerType //变压器类型
|
||||
{
|
||||
twoWinding = 0, //两绕组
|
||||
threeWinding //三绕组
|
||||
};
|
||||
|
||||
enum class BayType //间隔类型
|
||||
{
|
||||
busSectionBay = 0, //分段
|
||||
|
|
@ -412,6 +411,20 @@ enum class BayType //间隔类型
|
|||
mainTransformerBay //主变
|
||||
};
|
||||
|
||||
enum class EditorItemType //组态编辑中的图形项类型
|
||||
{
|
||||
bus = 0, //母线
|
||||
bay, //间隔
|
||||
Trans //变压器
|
||||
};
|
||||
|
||||
struct DiagramEditorWizardTransformerInfo //组态变压器信息
|
||||
{
|
||||
QString sName;
|
||||
TransformerType nType;
|
||||
QList<QString> lstBindObj; //连接的对象
|
||||
};
|
||||
|
||||
struct DiagramEditorWizardBayInfo //组态间隔信息
|
||||
{
|
||||
QString sName;
|
||||
|
|
@ -421,8 +434,9 @@ struct DiagramEditorWizardBayInfo //组态间隔信息
|
|||
|
||||
enum class DiagramEditorStructType
|
||||
{
|
||||
bus, //母线
|
||||
rowData //母线对应的一行数据
|
||||
block = 0, //模块(母线段、间隔、变压器)
|
||||
blockContainer, //模块容器(包含若干模块)
|
||||
rowData //行数据(包含若干容器)
|
||||
};
|
||||
|
||||
struct DiagramEditorConnectType //组态编辑连接信息
|
||||
|
|
|
|||
|
|
@ -30,7 +30,9 @@ set(DIAGRAMCAVAS_HEADER_FILES
|
|||
include/diagramEditor/editRowData.h
|
||||
include/diagramEditor/editMainRect.h
|
||||
include/diagramEditor/editItem.h
|
||||
include/diagramEditor/editBus.h
|
||||
include/diagramEditor/editItems.h
|
||||
include/diagramEditor/editContainerItem.h
|
||||
include/diagramEditor/editBlock.h
|
||||
include/diagramEditor/editBaseStruct.h
|
||||
include/diagramEditor/diagramEditorWizard.h
|
||||
include/diagramEditor/wizardBusTableDelegate.h
|
||||
|
|
@ -38,6 +40,7 @@ set(DIAGRAMCAVAS_HEADER_FILES
|
|||
include/diagramEditor/diagramEditorBaseBlock.h
|
||||
include/diagramEditor/diagramEditorStructContainer.h
|
||||
include/diagramEditor/diagramEditorBaySettingDlg.h
|
||||
include/diagramEditor/diagramEditorTransSettingDlg.h
|
||||
include/graphicsDataModel/baseModel.h
|
||||
include/graphicsDataModel/fixedPortsModel.h
|
||||
include/graphicsItem/electricConnectLineItem.h
|
||||
|
|
@ -105,7 +108,9 @@ set(DIAGRAMCAVAS_SOURCE_FILES
|
|||
source/diagramEditor/editRowData.cpp
|
||||
source/diagramEditor/editMainRect.cpp
|
||||
source/diagramEditor/editItem.cpp
|
||||
source/diagramEditor/editBus.cpp
|
||||
source/diagramEditor/editItems.cpp
|
||||
source/diagramEditor/editContainerItem.cpp
|
||||
source/diagramEditor/editBlock.cpp
|
||||
source/diagramEditor/editBaseStruct.cpp
|
||||
source/diagramEditor/diagramEditorWizard.cpp
|
||||
source/diagramEditor/wizardBusTableDelegate.cpp
|
||||
|
|
@ -113,6 +118,7 @@ set(DIAGRAMCAVAS_SOURCE_FILES
|
|||
source/diagramEditor/diagramEditorBaseBlock.cpp
|
||||
source/diagramEditor/diagramEditorStructContainer.cpp
|
||||
source/diagramEditor/diagramEditorBaySettingDlg.cpp
|
||||
source/diagramEditor/diagramEditorTransSettingDlg.cpp
|
||||
source/graphicsDataModel/baseModel.cpp
|
||||
source/graphicsDataModel/fixedPortsModel.cpp
|
||||
source/graphicsItem/electricConnectLineItem.cpp
|
||||
|
|
@ -163,6 +169,7 @@ set(UI_FILES
|
|||
ui/bayManagerDlg.ui
|
||||
ui/bayManagerContentDlg.ui
|
||||
ui/diagramEditorBaySettingDlg.ui
|
||||
ui/diagramEditorTransSettingDlg.ui
|
||||
)
|
||||
|
||||
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public slots:
|
|||
void onSignal_createEditPanel(QString);
|
||||
EditPanel* onSignal_addEditPanel(QString);
|
||||
void onSignal_addEditWizard(QString);
|
||||
void onSignal_wizardFinished(DiagramEditorWizardInfo);
|
||||
void onSignal_wizardFinished();
|
||||
/*********************************间隔**************************************/
|
||||
void onSignl_openCurrentBay();
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public:
|
|||
virtual DiagramEditorStructContainer* getCurContainer() {return _curContainer;}
|
||||
protected:
|
||||
QString sName;
|
||||
int nType; //1母线,2间隔
|
||||
int nType; //1母线,2间隔,3变压器
|
||||
QList<DiagramEditorBriefConnect> lstCon; //连接信息
|
||||
DiagramEditorStructContainer* _curContainer; //当前所处的容器
|
||||
};
|
||||
|
|
@ -65,4 +65,16 @@ protected:
|
|||
BayType nBayType;
|
||||
};
|
||||
|
||||
/***************************transformer单元****************************/
|
||||
class DiagramEditorTransformerBlock:public DiagramEditorBaseBlock
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
DiagramEditorTransformerBlock(QObject *parent = 0);
|
||||
virtual ~DiagramEditorTransformerBlock();
|
||||
virtual void setTransType(TransformerType typ) {nTransType = typ;}
|
||||
virtual TransformerType getTransType() {return nTransType;}
|
||||
protected:
|
||||
TransformerType nTransType;
|
||||
};
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
#ifndef DIAGRAMEDITORTRANSSETTINGDLG_H
|
||||
#define DIAGRAMEDITORTRANSSETTINGDLG_H
|
||||
|
||||
#include <QDialog>
|
||||
#include "global.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
namespace Ui { class diagramEditorTransSettingDlg; }
|
||||
QT_END_NAMESPACE
|
||||
|
||||
class DiagramEditorWizard;
|
||||
class DiagramEditorTransformerBlock;
|
||||
|
||||
class DiagramEditorTransSettingDlg : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
DiagramEditorTransSettingDlg(QWidget *parent = nullptr);
|
||||
~DiagramEditorTransSettingDlg();
|
||||
|
||||
void initial();
|
||||
void setParent(DiagramEditorWizard* p) {_pWizard = p;}
|
||||
void showDlg();
|
||||
void showDlg(DiagramEditorTransformerBlock*);
|
||||
void addNewTrans();
|
||||
public slots:
|
||||
void onAddClicked();
|
||||
void onDeleteClicked();
|
||||
void onOkClicked();
|
||||
void onCancelClicked();
|
||||
void onConnectLevelChanged(const QString&); //连接层级改变信号
|
||||
void onBayTypeChanged(int n);
|
||||
private:
|
||||
Ui::diagramEditorTransSettingDlg *ui;
|
||||
DiagramEditorWizard* _pWizard;
|
||||
int _curModel; //0新增,1修改
|
||||
DiagramEditorTransformerBlock* _curOperateBlock; //当前修改对象
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -13,6 +13,7 @@ class DiagramEditorBaseBlock;
|
|||
class DiagramEditorStructContainer;
|
||||
class QListWidgetItem;
|
||||
class DiagramEditorBaySettingDlg;
|
||||
class DiagramEditorTransSettingDlg;
|
||||
|
||||
class DiagramEditorWizard : public QDialog
|
||||
{
|
||||
|
|
@ -21,7 +22,7 @@ public:
|
|||
DiagramEditorWizard(QWidget *parent = nullptr);
|
||||
~DiagramEditorWizard();
|
||||
signals:
|
||||
void wizardFinish(DiagramEditorWizardInfo);
|
||||
void wizardFinish();
|
||||
public slots:
|
||||
void onOkClicked();
|
||||
void onCancelClicked();
|
||||
|
|
@ -32,34 +33,40 @@ public slots:
|
|||
void onAddBayClicked(); //添加间隔
|
||||
void onAddTransClicked(); //添加变压器
|
||||
void onAddBayFinished(DiagramEditorWizardBayInfo); //添加间隔完毕
|
||||
void onAddTransFinished(DiagramEditorWizardTransformerInfo); //添加变压器完毕
|
||||
|
||||
void onDelegateFinishEdit(const QModelIndex &index, const QString &value); //代理edit完成事件
|
||||
void onBusDeleteClicked();
|
||||
void onBusIndexRbtnClicked(const QPoint &pos); //bus列表右键菜单
|
||||
|
||||
void onTransDeleteClicked();
|
||||
void onTransModifyClicked();
|
||||
void onTransIndexRbtnClicked(const QPoint &pos); //变压器列表右键菜单
|
||||
|
||||
void onBayListSelected(QListWidgetItem* pItem); //baylist选择事件
|
||||
public:
|
||||
QMap<int,DiagramEditorWizardBusInfo> getMapBusInfo() {return _mapBus;}
|
||||
QMap<int,QMap<int,DiagramEditorStructContainer*>> getCointainerStruct(){return _mapSturctContainer;}
|
||||
QList<DiagramEditorBaseBlock*> getTargetLevelBlocks(int nLevel,int nType); //返回指定层数的对应block,type:1母线,2间隔
|
||||
QList<DiagramEditorBaseBlock*> getTargetLevelBlocks(int nLevel,int nType); //返回指定层数的对应block,type:1母线,2间隔,3变压器
|
||||
DiagramEditorStructContainer* getContainerByBlock(int nLevel,int nType,QString sName); //根据block名称返回container
|
||||
DiagramEditorBaseBlock* getBlockByName(int nLevel,int nType,QString sName); //根据名称返回block
|
||||
bool removeBlockByName(int nLevel,int nType,const QString& sName); //依据名称删除block
|
||||
WizardBayContentDlg* getContentDlg() {return _bayContentDlg;}
|
||||
DiagramEditorBaySettingDlg* getBaySettingDlg() {return _baySettingDlg;}
|
||||
void flushTransPage(); //刷新变压器界面
|
||||
private:
|
||||
void initial();
|
||||
void reOrderBus(); //重置bus次序
|
||||
void generateBayStruct(); //根据bus设置生成bay结构
|
||||
void showSelectedBayPage(int); //显示选中的bay页面
|
||||
void addTransformer(DiagramEditorWizardTransformerInfo); //界面上添加变压器
|
||||
template <typename T> void reindexQMap(QMap<int, T> &map); //重新排序函数
|
||||
private:
|
||||
Ui::diagramEditorWizard *ui;
|
||||
BiDirectionalMap<int,QString> _divideType; //划分段数名对照
|
||||
WizardBayContentDlg* _bayContentDlg;
|
||||
DiagramEditorBaySettingDlg* _baySettingDlg;
|
||||
DiagramEditorTransSettingDlg* _transSettingDlg;
|
||||
QMap<int,DiagramEditorWizardBusInfo> _mapBus; //母线信息
|
||||
|
||||
QMap<int,QMap<int,DiagramEditorStructContainer*>> _mapSturctContainer; //划分后的区块
|
||||
bool _busPageChanged; //母线页改变
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef EDITBASESTRUCT_H
|
||||
#define EDITBASESTRUCT_H
|
||||
|
||||
//编辑器基础结构,母线,母线下的一行回路
|
||||
//编辑器基础空间结构
|
||||
#include <QGraphicsWidget>
|
||||
#include "global.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
#ifndef EDITBLOCK_H
|
||||
#define EDITBLOCK_H
|
||||
//编辑器模块结构(分段母线、间隔、变压器等)
|
||||
#include <QGraphicsWidget>
|
||||
#include "diagramEditor/editBaseStruct.h"
|
||||
|
||||
class EditBlock : public EditBaseStruct
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
EditBlock(QGraphicsItem *parent = nullptr);
|
||||
~EditBlock();
|
||||
|
||||
void setupUI();
|
||||
void setName(QString s) {_sName = s;}
|
||||
protected:
|
||||
void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override;
|
||||
private:
|
||||
QString _sName;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
#ifndef EDITBUS_H
|
||||
#define EDITBUS_H
|
||||
//编辑器母线单元
|
||||
#include <QGraphicsWidget>
|
||||
#include "diagramEditor/editBaseStruct.h"
|
||||
|
||||
class EditBus : public EditBaseStruct
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
EditBus(QGraphicsItem *parent = nullptr);
|
||||
~EditBus();
|
||||
|
||||
void setupUI();
|
||||
void setName(QString s) {_sName = s;}
|
||||
protected:
|
||||
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override;
|
||||
private:
|
||||
QString _sName;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef EDITCONTAINERITEM_H
|
||||
#define EDITCONTAINERITEM_H
|
||||
//存放间隔、分段母线、变压器的实体
|
||||
#include <QGraphicsWidget>
|
||||
|
||||
class EditContainerItem : public QGraphicsWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
EditContainerItem(QGraphicsItem *parent = nullptr);
|
||||
~EditContainerItem();
|
||||
void setupUI();
|
||||
protected:
|
||||
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
#ifndef EDITITEMS_H
|
||||
#define EDITITEMS_H
|
||||
|
||||
//组态过程中的item
|
||||
#include <QGraphicsObject>
|
||||
#include "global.h"
|
||||
|
||||
class EditBaseItem : public QGraphicsObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
EditBaseItem(QGraphicsItem *parent = nullptr);
|
||||
virtual ~EditBaseItem();
|
||||
|
||||
virtual void setName(const QString& s){sName = s;}
|
||||
virtual QString getName(){return sName;}
|
||||
virtual void setType(EditorItemType tpe) {nType = tpe;}
|
||||
virtual EditorItemType getType(){return nType;}
|
||||
virtual void setBoundingRect(QRectF rec) {m_boundingRect = rec;}
|
||||
virtual QRectF boundingRect() {return m_boundingRect;}
|
||||
protected:
|
||||
virtual QPainterPath shape();
|
||||
protected:
|
||||
QString sName;
|
||||
EditorItemType nType;
|
||||
QRectF m_boundingRect;
|
||||
};
|
||||
|
||||
/********************bus*********************/
|
||||
class EditBusItem: public EditBaseItem
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
EditBusItem(QGraphicsItem *parent = nullptr);
|
||||
virtual ~EditBusItem();
|
||||
protected:
|
||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||
};
|
||||
|
||||
/********************bay*********************/
|
||||
class EditBayItem: public EditBaseItem
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
EditBayItem(QGraphicsItem *parent = nullptr);
|
||||
virtual ~EditBayItem();
|
||||
protected:
|
||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||
};
|
||||
|
||||
/********************trans*********************/
|
||||
class EditTransItem: public EditBaseItem
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
EditTransItem(QGraphicsItem *parent = nullptr);
|
||||
virtual ~EditTransItem();
|
||||
protected:
|
||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -21,15 +21,11 @@ public:
|
|||
EditPanel(QWidget *parent = nullptr);
|
||||
~EditPanel();
|
||||
|
||||
void initByWizardInfo(DiagramEditorWizardInfo);
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent* e);
|
||||
void initByWizardInfo();
|
||||
public slots:
|
||||
void onAddCLicked();
|
||||
void onWidthChanged(int width);
|
||||
private:
|
||||
void initial();
|
||||
int calHeight();
|
||||
private:
|
||||
EditView* m_pEditView;
|
||||
EditScene* m_pEditScene;
|
||||
|
|
@ -40,7 +36,6 @@ private:
|
|||
QGraphicsProxyWidget* m_addBtnPro;
|
||||
int _maxWidth;
|
||||
int _maxHeight;
|
||||
int _curRow;
|
||||
QList<EditRowData*> _lstData;
|
||||
QMap<int,QMap<int,EditBaseStruct*>> _mapStruct;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,26 +6,15 @@
|
|||
#include "diagramEditor/editBaseStruct.h"
|
||||
|
||||
class QPushButton;
|
||||
class QGraphicsProxyWidget;
|
||||
class EditItem;
|
||||
|
||||
class EditRowData : public EditBaseStruct
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
EditRowData(QGraphicsItem *parent = nullptr);
|
||||
~EditRowData();
|
||||
|
||||
int addItems(int);
|
||||
signals:
|
||||
void widthChanged(int width);
|
||||
public slots:
|
||||
void addItem();
|
||||
private:
|
||||
int calWidth();
|
||||
QGraphicsLinearLayout* m_layout;
|
||||
QPushButton* _btnAdd;
|
||||
QList<EditItem*> _lstItem;;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -375,15 +375,15 @@ void DiagramCavas::onSignal_addEditWizard(QString name)
|
|||
{
|
||||
if(_pEditorWizard == nullptr){
|
||||
_pEditorWizard = new DiagramEditorWizard(this);
|
||||
connect(_pEditorWizard,&DiagramEditorWizard::wizardFinish,this,[&,name](DiagramEditorWizardInfo info){
|
||||
connect(_pEditorWizard,&DiagramEditorWizard::wizardFinish,this,[&,name](){
|
||||
EditPanel* pPanel = onSignal_addEditPanel(name);
|
||||
pPanel->initByWizardInfo(info);
|
||||
pPanel->initByWizardInfo();
|
||||
});
|
||||
}
|
||||
_pEditorWizard->show();
|
||||
}
|
||||
|
||||
void DiagramCavas::onSignal_wizardFinished(DiagramEditorWizardInfo info)
|
||||
void DiagramCavas::onSignal_wizardFinished()
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,3 +86,14 @@ DiagramEditorBayBlock::~DiagramEditorBayBlock()
|
|||
{
|
||||
|
||||
}
|
||||
/***************************transformer单元****************************/
|
||||
DiagramEditorTransformerBlock::DiagramEditorTransformerBlock(QObject *parent)
|
||||
:DiagramEditorBaseBlock(parent)
|
||||
{
|
||||
nTransType = TransformerType::twoWinding;
|
||||
}
|
||||
|
||||
DiagramEditorTransformerBlock::~DiagramEditorTransformerBlock()
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ DiagramEditorBaySettingDlg::DiagramEditorBaySettingDlg(QWidget *parent)
|
|||
{
|
||||
ui->setupUi(this);
|
||||
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
||||
this->setWindowModality(Qt::WindowModal);
|
||||
initial();
|
||||
}
|
||||
|
||||
|
|
@ -67,6 +68,8 @@ void DiagramEditorBaySettingDlg::addNewBay()
|
|||
if(_pWizard){
|
||||
auto mapAllCon = _pWizard->getCointainerStruct();
|
||||
for(auto iter = mapAllCon.begin();iter != mapAllCon.end();++iter){
|
||||
if(iter.key() == g_transformerLevel)
|
||||
continue;
|
||||
ui->cb_level->addItem("第"+QString::number(iter.key()+1)+"层",iter.key());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,190 @@
|
|||
#include <QMessageBox>
|
||||
#include "diagramEditor/diagramEditorTransSettingDlg.h"
|
||||
#include "diagramEditor/diagramEditorWizard.h"
|
||||
#include "diagramEditor/diagramEditorBaseBlock.h"
|
||||
#include "ui_diagramEditorTransSettingDlg.h"
|
||||
#include "diagramEditor/diagramEditorStructContainer.h"
|
||||
#include "diagramEditor/wizardBayContentDlg.h"
|
||||
|
||||
DiagramEditorTransSettingDlg::DiagramEditorTransSettingDlg(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
, ui(new Ui::diagramEditorTransSettingDlg)
|
||||
,_curOperateBlock(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
||||
this->setWindowModality(Qt::WindowModal);
|
||||
initial();
|
||||
}
|
||||
|
||||
DiagramEditorTransSettingDlg::~DiagramEditorTransSettingDlg()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void DiagramEditorTransSettingDlg::showDlg()
|
||||
{
|
||||
_curModel = 0;
|
||||
show();
|
||||
addNewTrans();
|
||||
if(_pWizard){
|
||||
ui->le_name->setText("#主变");
|
||||
}
|
||||
}
|
||||
|
||||
void DiagramEditorTransSettingDlg::showDlg(DiagramEditorTransformerBlock* p)
|
||||
{
|
||||
_curModel = 1;
|
||||
if(_curOperateBlock == nullptr)
|
||||
_curOperateBlock = p;
|
||||
show();
|
||||
addNewTrans();
|
||||
if(_pWizard){
|
||||
ui->le_name->setText(p->getName());
|
||||
//ui->cb_level->setCurrentIndex(0);
|
||||
if(p){
|
||||
auto lstCon = p->getConnect();
|
||||
QStringList lst;
|
||||
for(auto& con:lstCon){
|
||||
QString sOppo = con.getOppositeName(p->getName());
|
||||
lst.append(sOppo);
|
||||
}
|
||||
ui->listWidget->addItems(lst);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DiagramEditorTransSettingDlg::addNewTrans()
|
||||
{
|
||||
ui->cb_type->setCurrentIndex(0);
|
||||
ui->cb_level->clear();
|
||||
ui->cb_target->clear();
|
||||
ui->listWidget->clear();
|
||||
if(_pWizard){
|
||||
auto mapAllCon = _pWizard->getCointainerStruct();
|
||||
for(auto iter = mapAllCon.begin();iter != mapAllCon.end();++iter){
|
||||
if(iter.key() == g_transformerLevel)
|
||||
continue;
|
||||
ui->cb_level->addItem("第"+QString::number(iter.key()+1)+"层",iter.key());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DiagramEditorTransSettingDlg::initial()
|
||||
{
|
||||
_curModel = 0;
|
||||
connect(ui->btn_add,&QPushButton::clicked,this,&DiagramEditorTransSettingDlg::onAddClicked);
|
||||
connect(ui->btn_delete,&QPushButton::clicked,this,&DiagramEditorTransSettingDlg::onDeleteClicked);
|
||||
connect(ui->btn_ok,&QPushButton::clicked,this,&DiagramEditorTransSettingDlg::onOkClicked);
|
||||
connect(ui->btn_cancel,&QPushButton::clicked,this,&DiagramEditorTransSettingDlg::onCancelClicked);
|
||||
connect(ui->cb_level,&QComboBox::currentTextChanged,this,&DiagramEditorTransSettingDlg::onConnectLevelChanged);
|
||||
connect(ui->cb_bayType,&QComboBox::currentIndexChanged,this,&DiagramEditorTransSettingDlg::onBayTypeChanged);
|
||||
ui->cb_bayType->setItemData(0,3); //将类型与item关联
|
||||
ui->cb_bayType->setItemData(1,4);
|
||||
}
|
||||
|
||||
void DiagramEditorTransSettingDlg::onAddClicked()
|
||||
{
|
||||
QString str = ui->cb_target->currentText();
|
||||
auto lst = ui->listWidget->findItems(str,Qt::MatchExactly);
|
||||
if(lst.size() == 0){ //为空才添加
|
||||
ui->listWidget->addItem(str);
|
||||
}
|
||||
}
|
||||
|
||||
void DiagramEditorTransSettingDlg::onDeleteClicked()
|
||||
{
|
||||
int n = ui->listWidget->currentRow();
|
||||
if(n){
|
||||
auto pItem = ui->listWidget->takeItem(n);
|
||||
delete pItem;
|
||||
}
|
||||
}
|
||||
|
||||
void DiagramEditorTransSettingDlg::onOkClicked()
|
||||
{
|
||||
QString sName = ui->le_name->text();
|
||||
TransformerType nType = TransformerType(ui->cb_type->currentIndex());
|
||||
if(_curModel == 0){
|
||||
auto lstBlock = _pWizard->getTargetLevelBlocks(g_transformerLevel,3);
|
||||
for(auto bay:lstBlock)
|
||||
{
|
||||
if(bay->getName() == sName){ //判断间隔存在
|
||||
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"变压器已存在"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
QStringList lst;
|
||||
for(int i = 0;i < ui->listWidget->count();++i){
|
||||
lst.append(ui->listWidget->item(i)->text());
|
||||
}
|
||||
|
||||
DiagramEditorWizardTransformerInfo info;
|
||||
info.sName = sName;
|
||||
info.nType = nType;
|
||||
info.lstBindObj = lst;
|
||||
|
||||
_pWizard->onAddTransFinished(info);
|
||||
}
|
||||
else if(_curModel == 1){
|
||||
if(_curOperateBlock){
|
||||
_curOperateBlock->setName(sName);
|
||||
_curOperateBlock->setTransType(nType);
|
||||
_curOperateBlock->clearConnect();
|
||||
|
||||
for(int i = 0;i < ui->listWidget->count();++i){
|
||||
_curOperateBlock->addConnect(ui->listWidget->item(i)->text(),1,true);
|
||||
}
|
||||
|
||||
_pWizard->flushTransPage();
|
||||
_curOperateBlock = nullptr;
|
||||
}
|
||||
}
|
||||
hide();
|
||||
}
|
||||
|
||||
void DiagramEditorTransSettingDlg::onCancelClicked()
|
||||
{
|
||||
hide();
|
||||
}
|
||||
|
||||
void DiagramEditorTransSettingDlg::onConnectLevelChanged(const QString& str)
|
||||
{
|
||||
if(_pWizard){
|
||||
int n = ui->cb_level->findText(str);
|
||||
BayType nType = BayType(ui->cb_bayType->currentData().toInt());
|
||||
if(n != -1){
|
||||
ui->cb_target->clear();
|
||||
int nIndex = ui->cb_level->itemData(n).toInt();
|
||||
auto lstBlock = _pWizard->getTargetLevelBlocks(nIndex,2);
|
||||
for(auto& block:lstBlock){
|
||||
auto pBay = dynamic_cast<DiagramEditorBayBlock*>(block);
|
||||
if(pBay){
|
||||
BayType tpe = pBay->getBayType();
|
||||
if(nType == tpe)
|
||||
ui->cb_target->addItem(pBay->getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DiagramEditorTransSettingDlg::onBayTypeChanged(int idx)
|
||||
{
|
||||
BayType nType = BayType(ui->cb_bayType->currentData().toInt());
|
||||
int n = ui->cb_level->currentIndex();
|
||||
if(n != -1){
|
||||
ui->cb_target->clear();
|
||||
int nIndex = ui->cb_level->itemData(n).toInt();
|
||||
auto lstBlock = _pWizard->getTargetLevelBlocks(nIndex,2);
|
||||
for(auto& block:lstBlock){
|
||||
auto pBay = dynamic_cast<DiagramEditorBayBlock*>(block);
|
||||
if(pBay){
|
||||
BayType tpe = pBay->getBayType();
|
||||
if(nType == tpe)
|
||||
ui->cb_target->addItem(pBay->getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7,11 +7,13 @@
|
|||
#include "diagramEditor/diagramEditorBaseBlock.h"
|
||||
#include "diagramEditor/diagramEditorStructContainer.h"
|
||||
#include "diagramEditor/diagramEditorBaySettingDlg.h"
|
||||
#include "diagramEditor/diagramEditorTransSettingDlg.h"
|
||||
|
||||
DiagramEditorWizard::DiagramEditorWizard(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
, ui(new Ui::diagramEditorWizard)
|
||||
,_baySettingDlg(nullptr)
|
||||
,_transSettingDlg(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
_busPageChanged = false;
|
||||
|
|
@ -47,11 +49,21 @@ void DiagramEditorWizard::initial()
|
|||
ui->tableWidget_bus->setHorizontalHeaderLabels(headerText);
|
||||
ui->tableWidget_bus->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||
|
||||
headerText.clear();
|
||||
headerText<<"变压器名称"<<"变压器类型"<<"连接对象";
|
||||
ui->tableWidget_trans->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
ui->tableWidget_trans->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||
ui->tableWidget_trans->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
ui->tableWidget_trans->setColumnCount(headerText.count());
|
||||
ui->tableWidget_trans->setHorizontalHeaderLabels(headerText);
|
||||
ui->tableWidget_trans->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||
|
||||
WizardBusTableDelegate* delegate = new WizardBusTableDelegate(this);
|
||||
ui->tableWidget_bus->setItemDelegate(delegate);
|
||||
|
||||
connect(delegate,&WizardBusTableDelegate::editingFinished,this,&DiagramEditorWizard::onDelegateFinishEdit);
|
||||
connect(ui->tableWidget_bus, &QTableWidget::customContextMenuRequested, this, &DiagramEditorWizard::onBusIndexRbtnClicked);
|
||||
connect(ui->tableWidget_trans, &QTableWidget::customContextMenuRequested, this, &DiagramEditorWizard::onTransIndexRbtnClicked);
|
||||
|
||||
connect(ui->listWidget_bay,&QListWidget::itemClicked,this,&DiagramEditorWizard::onBayListSelected);
|
||||
|
||||
|
|
@ -193,9 +205,55 @@ void DiagramEditorWizard::generateBayStruct()
|
|||
}
|
||||
}
|
||||
|
||||
void DiagramEditorWizard::showSelectedBayPage(int nIdx)
|
||||
void DiagramEditorWizard::flushTransPage()
|
||||
{
|
||||
ui->tableWidget_trans->clearContents();
|
||||
ui->tableWidget_trans->setRowCount(0);
|
||||
QList<DiagramEditorBaseBlock*> lst = getTargetLevelBlocks(g_transformerLevel,3);
|
||||
for(auto& block:lst){
|
||||
auto pItem = dynamic_cast<DiagramEditorTransformerBlock*>(block);
|
||||
if(pItem){
|
||||
DiagramEditorWizardTransformerInfo info;
|
||||
info.sName = pItem->getName();
|
||||
info.nType = pItem->getTransType();
|
||||
auto lstCon = pItem->getConnect(); //获取间隔所连对象的名称
|
||||
for(auto& con:lstCon){
|
||||
QString sOpposite = con.getOppositeName(pItem->getName());
|
||||
info.lstBindObj.append(sOpposite);
|
||||
}
|
||||
|
||||
addTransformer(info);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DiagramEditorWizard::addTransformer(DiagramEditorWizardTransformerInfo info)
|
||||
{
|
||||
int row = ui->tableWidget_trans->rowCount();
|
||||
ui->tableWidget_trans->insertRow(row);
|
||||
|
||||
//名称
|
||||
QTableWidgetItem* nameItem = new QTableWidgetItem(info.sName);
|
||||
ui->tableWidget_trans->setItem(row, 0, nameItem);
|
||||
|
||||
QString sType;
|
||||
switch (info.nType) {
|
||||
case TransformerType::twoWinding:
|
||||
sType = "两绕组变压器";
|
||||
break;
|
||||
case TransformerType::threeWinding:
|
||||
sType = "三绕组变压器";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//类型
|
||||
QTableWidgetItem* typeItem = new QTableWidgetItem(sType);
|
||||
ui->tableWidget_trans->setItem(row, 1, typeItem);
|
||||
|
||||
//连接
|
||||
QTableWidgetItem* connectItem = new QTableWidgetItem(info.lstBindObj.join("、"));
|
||||
ui->tableWidget_trans->setItem(row, 2, connectItem);
|
||||
}
|
||||
|
||||
template <typename T> void DiagramEditorWizard::reindexQMap(QMap<int, T> &map) {
|
||||
|
|
@ -218,9 +276,7 @@ template <typename T> void DiagramEditorWizard::reindexQMap(QMap<int, T> &map) {
|
|||
|
||||
void DiagramEditorWizard::onOkClicked()
|
||||
{
|
||||
DiagramEditorWizardInfo info;
|
||||
|
||||
emit wizardFinish(info);
|
||||
emit wizardFinish();
|
||||
hide();
|
||||
}
|
||||
|
||||
|
|
@ -275,7 +331,7 @@ void DiagramEditorWizard::onAddBusClicked()
|
|||
ui->tableWidget_bus->insertRow(row);
|
||||
|
||||
// 层级
|
||||
QTableWidgetItem* levelItem = new QTableWidgetItem("第"+QString::number(row)+"层");
|
||||
QTableWidgetItem* levelItem = new QTableWidgetItem("第"+QString::number(row+1)+"层");
|
||||
ui->tableWidget_bus->setItem(row, 0, levelItem);
|
||||
levelItem->setData(Qt::UserRole,row);
|
||||
|
||||
|
|
@ -312,7 +368,11 @@ void DiagramEditorWizard::onAddBayClicked()
|
|||
|
||||
void DiagramEditorWizard::onAddTransClicked()
|
||||
{
|
||||
|
||||
if(_transSettingDlg == nullptr){
|
||||
_transSettingDlg = new DiagramEditorTransSettingDlg(this);
|
||||
_transSettingDlg->setParent(this);
|
||||
}
|
||||
_transSettingDlg->showDlg();
|
||||
}
|
||||
|
||||
void DiagramEditorWizard::onAddBayFinished(DiagramEditorWizardBayInfo info)
|
||||
|
|
@ -337,6 +397,27 @@ void DiagramEditorWizard::onAddBayFinished(DiagramEditorWizardBayInfo info)
|
|||
}
|
||||
}
|
||||
|
||||
void DiagramEditorWizard::onAddTransFinished(DiagramEditorWizardTransformerInfo info)
|
||||
{
|
||||
auto pContainer = new DiagramEditorStructContainer(this);
|
||||
auto pTrans = new DiagramEditorTransformerBlock(this);
|
||||
|
||||
pTrans->setName(info.sName);
|
||||
pTrans->setType(3);
|
||||
pTrans->setTransType(info.nType);
|
||||
|
||||
for(auto& sName:info.lstBindObj){
|
||||
pTrans->addConnect(sName,2);
|
||||
}
|
||||
|
||||
pContainer->insertBlock(1,pTrans);
|
||||
|
||||
int nIndex =_mapSturctContainer.value(g_transformerLevel).size();
|
||||
_mapSturctContainer[g_transformerLevel].insert(nIndex,pContainer);
|
||||
|
||||
flushTransPage();
|
||||
}
|
||||
|
||||
void DiagramEditorWizard::onDelegateFinishEdit(const QModelIndex &index, const QString &value)
|
||||
{
|
||||
int row = index.row();
|
||||
|
|
@ -436,6 +517,96 @@ void DiagramEditorWizard::onBusIndexRbtnClicked(const QPoint &pos)
|
|||
menu.exec(ui->tableWidget_bus->mapToGlobal(pos));
|
||||
}
|
||||
|
||||
void DiagramEditorWizard::onTransDeleteClicked()
|
||||
{
|
||||
// 获取当前选中的索引
|
||||
QModelIndexList selectedIndexes = ui->tableWidget_trans->selectionModel()->selectedRows();
|
||||
if (selectedIndexes.isEmpty()) {
|
||||
return; // 没有选中任何行
|
||||
}
|
||||
|
||||
// 获取当前选中的第一项索引
|
||||
QModelIndex index = selectedIndexes.first();
|
||||
if (!index.isValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QModelIndex indexName = index.sibling(index.row(),0);
|
||||
QString sName = indexName.data().toString();
|
||||
|
||||
DiagramEditorStructContainer* pCon = getContainerByBlock(g_transformerLevel,3,sName);
|
||||
bool res = removeBlockByName(g_transformerLevel,3,sName);
|
||||
if(pCon){ //同时删除container(一个container包含一个变压器)
|
||||
for(auto iter = _mapSturctContainer[g_transformerLevel].begin(); iter != _mapSturctContainer[g_transformerLevel].end();++iter){
|
||||
if(iter.value() == pCon){
|
||||
delete pCon;
|
||||
_mapSturctContainer[g_transformerLevel].erase(iter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(res){
|
||||
flushTransPage();
|
||||
}
|
||||
else{
|
||||
return;
|
||||
}
|
||||
|
||||
int currentRow = ui->tableWidget_trans->currentRow();
|
||||
if (currentRow == -1) {
|
||||
return; // 没有选中行
|
||||
}
|
||||
|
||||
ui->tableWidget_trans->removeRow(currentRow);
|
||||
}
|
||||
|
||||
void DiagramEditorWizard::onTransModifyClicked()
|
||||
{
|
||||
// 获取当前选中的索引
|
||||
QModelIndexList selectedIndexes = ui->tableWidget_trans->selectionModel()->selectedRows();
|
||||
if (selectedIndexes.isEmpty()) {
|
||||
return; // 没有选中任何行
|
||||
}
|
||||
|
||||
// 获取当前选中的第一项索引
|
||||
QModelIndex index = selectedIndexes.first();
|
||||
if (!index.isValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QModelIndex indexName = index.sibling(index.row(),0);
|
||||
QString sName = indexName.data().toString();
|
||||
|
||||
DiagramEditorBaseBlock* pBlock = getBlockByName(g_transformerLevel,3,sName);
|
||||
if(pBlock){
|
||||
auto pTran = dynamic_cast<DiagramEditorTransformerBlock*>(pBlock);
|
||||
if(pTran)
|
||||
_transSettingDlg->showDlg(pTran);
|
||||
}
|
||||
}
|
||||
|
||||
void DiagramEditorWizard::onTransIndexRbtnClicked(const QPoint &pos)
|
||||
{
|
||||
// 获取当前点击的位置对应的索引
|
||||
QModelIndex index = ui->tableWidget_bus->indexAt(pos);
|
||||
if (!index.isValid()) {
|
||||
return; // 如果点击的是空白区域,直接返回
|
||||
}
|
||||
|
||||
QMenu menu;
|
||||
QAction *deleteAction = new QAction("移除变压器", this);
|
||||
QAction *modifyAction = new QAction("修改变压器", this);
|
||||
menu.addAction(deleteAction);
|
||||
menu.addAction(modifyAction);
|
||||
|
||||
// 连接删除菜单项的触发信号与槽函数
|
||||
connect(deleteAction, &QAction::triggered, this, &DiagramEditorWizard::onTransDeleteClicked);
|
||||
connect(modifyAction, &QAction::triggered, this, &DiagramEditorWizard::onTransModifyClicked);
|
||||
|
||||
// 在点击位置显示菜单
|
||||
menu.exec(ui->tableWidget_bus->mapToGlobal(pos));
|
||||
}
|
||||
|
||||
void DiagramEditorWizard::onBayListSelected(QListWidgetItem* pItem)
|
||||
{
|
||||
int nIndex = pItem->data(Qt::UserRole).toInt();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
#include <QPainter>
|
||||
#include "diagramEditor/editBlock.h"
|
||||
|
||||
EditBlock::EditBlock(QGraphicsItem *parent)
|
||||
: EditBaseStruct(parent)
|
||||
{
|
||||
setupUI();
|
||||
}
|
||||
EditBlock::~EditBlock()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void EditBlock::setupUI()
|
||||
{
|
||||
setDataType(DiagramEditorStructType::block);
|
||||
}
|
||||
|
||||
void EditBlock::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
||||
{
|
||||
QRectF rec = boundingRect();
|
||||
painter->drawRect(rec);
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
#include <QPainter>
|
||||
#include "diagramEditor/editBus.h"
|
||||
|
||||
EditBus::EditBus(QGraphicsItem *parent)
|
||||
: EditBaseStruct(parent)
|
||||
{
|
||||
setupUI();
|
||||
}
|
||||
EditBus::~EditBus()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void EditBus::setupUI()
|
||||
{
|
||||
setDataType(DiagramEditorStructType::bus);
|
||||
}
|
||||
|
||||
void EditBus::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
||||
{
|
||||
QRectF rec = boundingRect();
|
||||
rec.adjust(0,rec.height()*0.45,0,-rec.height()*0.45);
|
||||
painter->fillRect(rec, Qt::black);
|
||||
painter->drawText(QPointF(boundingRect().x(),boundingRect().y()),_sName);
|
||||
//painter->fillRect(boundingRect(), QColor(224, 238, 238)); // 背景
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
#include <QGraphicsGridLayout>
|
||||
#include <QPainter>
|
||||
#include <QSizePolicy>
|
||||
#include <QGraphicsSceneMouseEvent>
|
||||
#include "diagramEditor/editContainerItem.h"
|
||||
|
||||
EditContainerItem::EditContainerItem(QGraphicsItem *parent)
|
||||
: QGraphicsWidget(parent)
|
||||
{
|
||||
setupUI();
|
||||
}
|
||||
EditContainerItem::~EditContainerItem()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void EditContainerItem::setupUI()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void EditContainerItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
event->ignore();
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
#include <QPainter>
|
||||
#include "diagramEditor/editItems.h"
|
||||
|
||||
EditBaseItem::EditBaseItem(QGraphicsItem *parent)
|
||||
: QGraphicsObject(parent)
|
||||
{
|
||||
|
||||
}
|
||||
EditBaseItem::~EditBaseItem()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QPainterPath EditBaseItem::shape()
|
||||
{
|
||||
QPainterPath path;
|
||||
path.addRect(m_boundingRect);
|
||||
return path;
|
||||
}
|
||||
|
||||
/********************bus*********************/
|
||||
EditBusItem::EditBusItem(QGraphicsItem *parent)
|
||||
: EditBaseItem(parent)
|
||||
{
|
||||
|
||||
}
|
||||
EditBusItem::~EditBusItem()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void EditBusItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
||||
{
|
||||
painter->fillRect(m_boundingRect,Qt::black);
|
||||
}
|
||||
|
||||
/********************Bay*********************/
|
||||
|
||||
EditBayItem::EditBayItem(QGraphicsItem *parent)
|
||||
: EditBaseItem(parent)
|
||||
{
|
||||
|
||||
}
|
||||
EditBayItem::~EditBayItem()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void EditBayItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
||||
{
|
||||
painter->setPen(QColor(100,149,237));
|
||||
painter->drawRect(m_boundingRect);
|
||||
}
|
||||
|
||||
/********************trans*********************/
|
||||
|
||||
EditTransItem::EditTransItem(QGraphicsItem *parent)
|
||||
: EditBaseItem(parent)
|
||||
{
|
||||
|
||||
}
|
||||
EditTransItem::~EditTransItem()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void EditTransItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
#include "diagramEditor/editView.h"
|
||||
#include "diagramEditor/editRowData.h"
|
||||
#include "diagramEditor/editMainRect.h"
|
||||
#include "diagramEditor/editBus.h"
|
||||
#include "diagramEditor/editBlock.h"
|
||||
#include "global.h"
|
||||
#include <QDebug>
|
||||
|
||||
|
|
@ -17,7 +17,6 @@ EditPanel::EditPanel(QWidget *parent)
|
|||
{
|
||||
_maxWidth = 0;
|
||||
_maxHeight = 0;
|
||||
_curRow = 0;
|
||||
_layout = new QVBoxLayout(this);
|
||||
m_pEditScene = new EditScene(this);
|
||||
//设置场景大小.前两个参数为scene的坐标远点,设置到view的中心点后,无论view如何缩放,secne的坐标原点都不会动,方便后续的位置计算
|
||||
|
|
@ -36,91 +35,9 @@ EditPanel::~EditPanel()
|
|||
|
||||
}
|
||||
|
||||
void EditPanel::initByWizardInfo(DiagramEditorWizardInfo info)
|
||||
void EditPanel::initByWizardInfo()
|
||||
{
|
||||
/*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();*/
|
||||
_widgetLayout->addStretch();
|
||||
}
|
||||
|
||||
void EditPanel::onWidthChanged(int width)
|
||||
|
|
@ -131,7 +48,6 @@ void EditPanel::onWidthChanged(int 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();
|
||||
|
|
@ -149,27 +65,4 @@ void EditPanel::initial()
|
|||
_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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
#include <QGraphicsProxyWidget>
|
||||
#include <QPushButton>
|
||||
#include "diagramEditor/editRowData.h"
|
||||
#include "diagramEditor/editItem.h"
|
||||
#include "global.h"
|
||||
|
||||
|
||||
|
|
@ -11,16 +10,10 @@ EditRowData::EditRowData(QGraphicsItem *parent)
|
|||
{
|
||||
m_layout = new QGraphicsLinearLayout(Qt::Horizontal, this);
|
||||
|
||||
// 添加按钮
|
||||
//_btnAdd = new QPushButton("Add Item");
|
||||
//QGraphicsProxyWidget* btnProxy = new QGraphicsProxyWidget(this);
|
||||
//m_layout->addItem(btnProxy);
|
||||
//m_layout->setAlignment(btnProxy,Qt::AlignCenter);
|
||||
//btnProxy->setWidget(_btnAdd);
|
||||
|
||||
m_layout->addStretch();
|
||||
m_layout->setSpacing(6);
|
||||
|
||||
//connect(_btnAdd, &QPushButton::clicked, this, &EditRowData::addItem);
|
||||
setDataType(DiagramEditorStructType::rowData);
|
||||
}
|
||||
EditRowData::~EditRowData()
|
||||
|
|
@ -28,46 +21,9 @@ EditRowData::~EditRowData()
|
|||
|
||||
}
|
||||
|
||||
int EditRowData::addItems(int n)
|
||||
{
|
||||
if(n < 1)
|
||||
return -1;
|
||||
for(int i = 0;i < n; ++i)
|
||||
{
|
||||
EditItem* pItem = new EditItem(this);
|
||||
pItem->setMaximumSize(g_dEditorItem_Width, g_dEditorItem_Height);
|
||||
pItem->setMinimumSize(g_dEditorItem_Width, g_dEditorItem_Height);
|
||||
_lstItem.append(pItem);
|
||||
m_layout->insertItem(0,pItem);
|
||||
m_layout->setStretchFactor(pItem,0);
|
||||
}
|
||||
int nWidth = calWidth();
|
||||
setMinimumWidth(nWidth);
|
||||
return nWidth;
|
||||
}
|
||||
|
||||
void EditRowData::addItem()
|
||||
{
|
||||
EditItem* pItem = new EditItem(this);
|
||||
pItem->setMaximumSize(g_dEditorItem_Width, g_dEditorItem_Height);
|
||||
pItem->setMinimumSize(g_dEditorItem_Width, g_dEditorItem_Height);
|
||||
|
||||
int nWidth = calWidth();
|
||||
setMinimumWidth(nWidth);
|
||||
_lstItem.append(pItem);
|
||||
m_layout->insertItem(m_layout->count()-1,pItem);
|
||||
m_layout->setStretchFactor(pItem,1);
|
||||
|
||||
emit widthChanged(nWidth);
|
||||
}
|
||||
|
||||
int EditRowData::calWidth()
|
||||
{
|
||||
int width = 0;
|
||||
for(auto &pro:_lstItem)
|
||||
{
|
||||
width += pro->rect().width()+6;
|
||||
}
|
||||
//width += _btnAdd->width()+250; //100为add按钮的宽度
|
||||
|
||||
return width;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,281 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>diagramEditorTransSettingDlg</class>
|
||||
<widget class="QDialog" name="diagramEditorTransSettingDlg">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>521</width>
|
||||
<height>425</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>12</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgb(196, 196, 196);</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>12</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">color: rgb(0, 0, 0);</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>设置变压器</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>460</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_2" native="true">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>基本信息</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,1,0,1">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>变压器名称</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_name"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>变压器类型</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="cb_type">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>两绕组变压器</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>三绕组变压器</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>连接信息</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<property name="horizontalSpacing">
|
||||
<number>20</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout" rowstretch="1,1,1,0" columnstretch="1,2">
|
||||
<property name="verticalSpacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="cb_target"/>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>间隔位置</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>间隔类型</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="cb_level"/>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="cb_bayType">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>进线间隔</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>出线间隔</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<property name="spacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btn_add">
|
||||
<property name="text">
|
||||
<string>添加</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btn_delete">
|
||||
<property name="text">
|
||||
<string>删除</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>间隔名称</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="1" rowspan="2">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>连接列表</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QListWidget" name="listWidget"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>155</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btn_ok">
|
||||
<property name="text">
|
||||
<string>确定</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btn_cancel">
|
||||
<property name="text">
|
||||
<string>取消</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
|
@ -180,7 +180,7 @@
|
|||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
|
|
|
|||
Loading…
Reference in New Issue