From 064c73af08fd4c6f4779f95e4bed4abe3dc7180d Mon Sep 17 00:00:00 2001 From: baiYue Date: Thu, 31 Jul 2025 19:38:06 +0800 Subject: [PATCH] add transformer setting ui --- common/include/global.h | 34 ++- diagramCavas/CMakeLists.txt | 11 +- diagramCavas/include/diagramCavas.h | 2 +- .../diagramEditor/diagramEditorBaseBlock.h | 14 +- .../diagramEditorTransSettingDlg.h | 40 +++ .../diagramEditor/diagramEditorWizard.h | 15 +- .../include/diagramEditor/editBaseStruct.h | 2 +- .../include/diagramEditor/editBlock.h | 22 ++ diagramCavas/include/diagramEditor/editBus.h | 22 -- .../include/diagramEditor/editContainerItem.h | 17 ++ .../include/diagramEditor/editItems.h | 62 ++++ .../include/diagramEditor/editPanel.h | 7 +- .../include/diagramEditor/editRowData.h | 11 - diagramCavas/source/diagramCavas.cpp | 6 +- .../diagramEditor/diagramEditorBaseBlock.cpp | 11 + .../diagramEditorBaySettingDlg.cpp | 3 + .../diagramEditorTransSettingDlg.cpp | 190 ++++++++++++ .../diagramEditor/diagramEditorWizard.cpp | 183 +++++++++++- .../source/diagramEditor/editBlock.cpp | 23 ++ diagramCavas/source/diagramEditor/editBus.cpp | 26 -- .../diagramEditor/editContainerItem.cpp | 25 ++ .../source/diagramEditor/editItems.cpp | 70 +++++ .../source/diagramEditor/editPanel.cpp | 113 +------ .../source/diagramEditor/editRowData.cpp | 48 +-- .../ui/diagramEditorTransSettingDlg.ui | 281 ++++++++++++++++++ diagramCavas/ui/diagramEditorWizard.ui | 2 +- 26 files changed, 990 insertions(+), 250 deletions(-) create mode 100644 diagramCavas/include/diagramEditor/diagramEditorTransSettingDlg.h create mode 100644 diagramCavas/include/diagramEditor/editBlock.h delete mode 100644 diagramCavas/include/diagramEditor/editBus.h create mode 100644 diagramCavas/include/diagramEditor/editContainerItem.h create mode 100644 diagramCavas/include/diagramEditor/editItems.h create mode 100644 diagramCavas/source/diagramEditor/diagramEditorTransSettingDlg.cpp create mode 100644 diagramCavas/source/diagramEditor/editBlock.cpp delete mode 100644 diagramCavas/source/diagramEditor/editBus.cpp create mode 100644 diagramCavas/source/diagramEditor/editContainerItem.cpp create mode 100644 diagramCavas/source/diagramEditor/editItems.cpp create mode 100644 diagramCavas/ui/diagramEditorTransSettingDlg.ui diff --git a/common/include/global.h b/common/include/global.h index 6d57025..ceafcc4 100644 --- a/common/include/global.h +++ b/common/include/global.h @@ -380,14 +380,7 @@ struct gridInfo //grid QMap zoneMap; };*/ //===================组态编辑器使用================ -struct DiagramEditorWizardInfo //组态编辑向导信息 -{ - /*int nIndex = 0; - double dVoltage = 0; - int nLineType = 1; //1单母线,2双母线 - QMap 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 lstBindObj; //连接的对象 +}; + struct DiagramEditorWizardBayInfo //组态间隔信息 { QString sName; @@ -421,8 +434,9 @@ struct DiagramEditorWizardBayInfo //组态间隔信息 enum class DiagramEditorStructType { - bus, //母线 - rowData //母线对应的一行数据 + block = 0, //模块(母线段、间隔、变压器) + blockContainer, //模块容器(包含若干模块) + rowData //行数据(包含若干容器) }; struct DiagramEditorConnectType //组态编辑连接信息 diff --git a/diagramCavas/CMakeLists.txt b/diagramCavas/CMakeLists.txt index 942323d..f1ca627 100644 --- a/diagramCavas/CMakeLists.txt +++ b/diagramCavas/CMakeLists.txt @@ -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) diff --git a/diagramCavas/include/diagramCavas.h b/diagramCavas/include/diagramCavas.h index 514827f..6517130 100644 --- a/diagramCavas/include/diagramCavas.h +++ b/diagramCavas/include/diagramCavas.h @@ -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: diff --git a/diagramCavas/include/diagramEditor/diagramEditorBaseBlock.h b/diagramCavas/include/diagramEditor/diagramEditorBaseBlock.h index 4fcd612..5fe088f 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorBaseBlock.h +++ b/diagramCavas/include/diagramEditor/diagramEditorBaseBlock.h @@ -27,7 +27,7 @@ public: virtual DiagramEditorStructContainer* getCurContainer() {return _curContainer;} protected: QString sName; - int nType; //1母线,2间隔 + int nType; //1母线,2间隔,3变压器 QList 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 diff --git a/diagramCavas/include/diagramEditor/diagramEditorTransSettingDlg.h b/diagramCavas/include/diagramEditor/diagramEditorTransSettingDlg.h new file mode 100644 index 0000000..da95719 --- /dev/null +++ b/diagramCavas/include/diagramEditor/diagramEditorTransSettingDlg.h @@ -0,0 +1,40 @@ +#ifndef DIAGRAMEDITORTRANSSETTINGDLG_H +#define DIAGRAMEDITORTRANSSETTINGDLG_H + +#include +#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 diff --git a/diagramCavas/include/diagramEditor/diagramEditorWizard.h b/diagramCavas/include/diagramEditor/diagramEditorWizard.h index 05d7337..fb9aa4f 100644 --- a/diagramCavas/include/diagramEditor/diagramEditorWizard.h +++ b/diagramCavas/include/diagramEditor/diagramEditorWizard.h @@ -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 getMapBusInfo() {return _mapBus;} QMap> getCointainerStruct(){return _mapSturctContainer;} - QList getTargetLevelBlocks(int nLevel,int nType); //返回指定层数的对应block,type:1母线,2间隔 + QList 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 void reindexQMap(QMap &map); //重新排序函数 private: Ui::diagramEditorWizard *ui; BiDirectionalMap _divideType; //划分段数名对照 WizardBayContentDlg* _bayContentDlg; DiagramEditorBaySettingDlg* _baySettingDlg; + DiagramEditorTransSettingDlg* _transSettingDlg; QMap _mapBus; //母线信息 - QMap> _mapSturctContainer; //划分后的区块 bool _busPageChanged; //母线页改变 }; diff --git a/diagramCavas/include/diagramEditor/editBaseStruct.h b/diagramCavas/include/diagramEditor/editBaseStruct.h index 1129f3d..2ed6c4e 100644 --- a/diagramCavas/include/diagramEditor/editBaseStruct.h +++ b/diagramCavas/include/diagramEditor/editBaseStruct.h @@ -1,7 +1,7 @@ #ifndef EDITBASESTRUCT_H #define EDITBASESTRUCT_H -//编辑器基础结构,母线,母线下的一行回路 +//编辑器基础空间结构 #include #include "global.h" diff --git a/diagramCavas/include/diagramEditor/editBlock.h b/diagramCavas/include/diagramEditor/editBlock.h new file mode 100644 index 0000000..f86e034 --- /dev/null +++ b/diagramCavas/include/diagramEditor/editBlock.h @@ -0,0 +1,22 @@ +#ifndef EDITBLOCK_H +#define EDITBLOCK_H +//编辑器模块结构(分段母线、间隔、变压器等) +#include +#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 diff --git a/diagramCavas/include/diagramEditor/editBus.h b/diagramCavas/include/diagramEditor/editBus.h deleted file mode 100644 index 349effe..0000000 --- a/diagramCavas/include/diagramEditor/editBus.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef EDITBUS_H -#define EDITBUS_H -//编辑器母线单元 -#include -#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 diff --git a/diagramCavas/include/diagramEditor/editContainerItem.h b/diagramCavas/include/diagramEditor/editContainerItem.h new file mode 100644 index 0000000..762d725 --- /dev/null +++ b/diagramCavas/include/diagramEditor/editContainerItem.h @@ -0,0 +1,17 @@ +#ifndef EDITCONTAINERITEM_H +#define EDITCONTAINERITEM_H +//存放间隔、分段母线、变压器的实体 +#include + +class EditContainerItem : public QGraphicsWidget +{ + Q_OBJECT +public: + EditContainerItem(QGraphicsItem *parent = nullptr); + ~EditContainerItem(); + void setupUI(); +protected: + virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override; +}; + +#endif diff --git a/diagramCavas/include/diagramEditor/editItems.h b/diagramCavas/include/diagramEditor/editItems.h new file mode 100644 index 0000000..469e10f --- /dev/null +++ b/diagramCavas/include/diagramEditor/editItems.h @@ -0,0 +1,62 @@ +#ifndef EDITITEMS_H +#define EDITITEMS_H + +//组态过程中的item +#include +#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 diff --git a/diagramCavas/include/diagramEditor/editPanel.h b/diagramCavas/include/diagramEditor/editPanel.h index 4732361..51b2df8 100644 --- a/diagramCavas/include/diagramEditor/editPanel.h +++ b/diagramCavas/include/diagramEditor/editPanel.h @@ -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 _lstData; QMap> _mapStruct; }; diff --git a/diagramCavas/include/diagramEditor/editRowData.h b/diagramCavas/include/diagramEditor/editRowData.h index 704ba84..77e712c 100644 --- a/diagramCavas/include/diagramEditor/editRowData.h +++ b/diagramCavas/include/diagramEditor/editRowData.h @@ -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 _lstItem;; }; #endif diff --git a/diagramCavas/source/diagramCavas.cpp b/diagramCavas/source/diagramCavas.cpp index 665b08d..79f6399 100644 --- a/diagramCavas/source/diagramCavas.cpp +++ b/diagramCavas/source/diagramCavas.cpp @@ -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() { } diff --git a/diagramCavas/source/diagramEditor/diagramEditorBaseBlock.cpp b/diagramCavas/source/diagramEditor/diagramEditorBaseBlock.cpp index c9d353f..6283b7f 100644 --- a/diagramCavas/source/diagramEditor/diagramEditorBaseBlock.cpp +++ b/diagramCavas/source/diagramEditor/diagramEditorBaseBlock.cpp @@ -86,3 +86,14 @@ DiagramEditorBayBlock::~DiagramEditorBayBlock() { } +/***************************transformer单元****************************/ +DiagramEditorTransformerBlock::DiagramEditorTransformerBlock(QObject *parent) + :DiagramEditorBaseBlock(parent) +{ + nTransType = TransformerType::twoWinding; +} + +DiagramEditorTransformerBlock::~DiagramEditorTransformerBlock() +{ + +} diff --git a/diagramCavas/source/diagramEditor/diagramEditorBaySettingDlg.cpp b/diagramCavas/source/diagramEditor/diagramEditorBaySettingDlg.cpp index bf207bb..29380f9 100644 --- a/diagramCavas/source/diagramEditor/diagramEditorBaySettingDlg.cpp +++ b/diagramCavas/source/diagramEditor/diagramEditorBaySettingDlg.cpp @@ -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()); } } diff --git a/diagramCavas/source/diagramEditor/diagramEditorTransSettingDlg.cpp b/diagramCavas/source/diagramEditor/diagramEditorTransSettingDlg.cpp new file mode 100644 index 0000000..0619e62 --- /dev/null +++ b/diagramCavas/source/diagramEditor/diagramEditorTransSettingDlg.cpp @@ -0,0 +1,190 @@ +#include +#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(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(block); + if(pBay){ + BayType tpe = pBay->getBayType(); + if(nType == tpe) + ui->cb_target->addItem(pBay->getName()); + } + } + } +} diff --git a/diagramCavas/source/diagramEditor/diagramEditorWizard.cpp b/diagramCavas/source/diagramEditor/diagramEditorWizard.cpp index 695939e..3ae6c07 100644 --- a/diagramCavas/source/diagramEditor/diagramEditorWizard.cpp +++ b/diagramCavas/source/diagramEditor/diagramEditorWizard.cpp @@ -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 lst = getTargetLevelBlocks(g_transformerLevel,3); + for(auto& block:lst){ + auto pItem = dynamic_cast(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 void DiagramEditorWizard::reindexQMap(QMap &map) { @@ -218,9 +276,7 @@ template void DiagramEditorWizard::reindexQMap(QMap &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(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(); diff --git a/diagramCavas/source/diagramEditor/editBlock.cpp b/diagramCavas/source/diagramEditor/editBlock.cpp new file mode 100644 index 0000000..c60a6ff --- /dev/null +++ b/diagramCavas/source/diagramEditor/editBlock.cpp @@ -0,0 +1,23 @@ +#include +#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); +} diff --git a/diagramCavas/source/diagramEditor/editBus.cpp b/diagramCavas/source/diagramEditor/editBus.cpp deleted file mode 100644 index 07fbab8..0000000 --- a/diagramCavas/source/diagramEditor/editBus.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include -#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)); // 背景 -} diff --git a/diagramCavas/source/diagramEditor/editContainerItem.cpp b/diagramCavas/source/diagramEditor/editContainerItem.cpp new file mode 100644 index 0000000..42e0840 --- /dev/null +++ b/diagramCavas/source/diagramEditor/editContainerItem.cpp @@ -0,0 +1,25 @@ +#include +#include +#include +#include +#include "diagramEditor/editContainerItem.h" + +EditContainerItem::EditContainerItem(QGraphicsItem *parent) + : QGraphicsWidget(parent) +{ + setupUI(); +} +EditContainerItem::~EditContainerItem() +{ + +} + +void EditContainerItem::setupUI() +{ + +} + +void EditContainerItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +{ + event->ignore(); +} diff --git a/diagramCavas/source/diagramEditor/editItems.cpp b/diagramCavas/source/diagramEditor/editItems.cpp new file mode 100644 index 0000000..432eda1 --- /dev/null +++ b/diagramCavas/source/diagramEditor/editItems.cpp @@ -0,0 +1,70 @@ +#include +#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) +{ + +} diff --git a/diagramCavas/source/diagramEditor/editPanel.cpp b/diagramCavas/source/diagramEditor/editPanel.cpp index 7df08dd..3b0f438 100644 --- a/diagramCavas/source/diagramEditor/editPanel.cpp +++ b/diagramCavas/source/diagramEditor/editPanel.cpp @@ -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 @@ -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 mapBus; //母线 - QMap 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 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()<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()<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; } diff --git a/diagramCavas/source/diagramEditor/editRowData.cpp b/diagramCavas/source/diagramEditor/editRowData.cpp index 77b9d32..1736b14 100644 --- a/diagramCavas/source/diagramEditor/editRowData.cpp +++ b/diagramCavas/source/diagramEditor/editRowData.cpp @@ -2,7 +2,6 @@ #include #include #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; } diff --git a/diagramCavas/ui/diagramEditorTransSettingDlg.ui b/diagramCavas/ui/diagramEditorTransSettingDlg.ui new file mode 100644 index 0000000..e4724a7 --- /dev/null +++ b/diagramCavas/ui/diagramEditorTransSettingDlg.ui @@ -0,0 +1,281 @@ + + + diagramEditorTransSettingDlg + + + + 0 + 0 + 521 + 425 + + + + + 12 + + + + Dialog + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 16777215 + 25 + + + + background-color: rgb(196, 196, 196); + + + + 0 + + + 0 + + + 0 + + + + + + 12 + + + + color: rgb(0, 0, 0); + + + 设置变压器 + + + + + + + Qt::Orientation::Horizontal + + + + 460 + 20 + + + + + + + + + + + + + + 基本信息 + + + + 6 + + + + + 变压器名称 + + + + + + + + + + 变压器类型 + + + + + + + + 两绕组变压器 + + + + + 三绕组变压器 + + + + + + + + + + + 连接信息 + + + + 20 + + + + + 10 + + + + + + + + 间隔位置 + + + + + + + 间隔类型 + + + + + + + + + + + 进线间隔 + + + + + 出线间隔 + + + + + + + + 10 + + + + + 添加 + + + + + + + 删除 + + + + + + + + + 间隔名称 + + + + + + + + + + + 连接列表 + + + + + + + + + + + + Qt::Orientation::Vertical + + + + 20 + 155 + + + + + + + + + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + + + + diff --git a/diagramCavas/ui/diagramEditorWizard.ui b/diagramCavas/ui/diagramEditorWizard.ui index d49c43f..18637c3 100644 --- a/diagramCavas/ui/diagramEditorWizard.ui +++ b/diagramCavas/ui/diagramEditorWizard.ui @@ -180,7 +180,7 @@ - 0 + 6 0