#ifndef EDITPANEL_H #define EDITPANEL_H //编辑文本项生成组态图 #include #include #include "global.h" class EditView; class EditScene; class QVBoxLayout; //class QGraphicsGridLayout; class QGraphicsLinearLayout; class QPushButton; class EditMainRect; class EditRowData; class EditContainerItem; class DiagramEditorWizard; class DiagramEditorBaseBlock; class EditBaseItem; class DiagramEditorBayDetailSettingDlg; class DiagramEditorTransDetailSettingDlg; class DiagramEditorModel; class DiagramEditorPreviewDlg; class EditPanel : public QWidget { Q_OBJECT public: EditPanel(QWidget *parent = nullptr); ~EditPanel(); void initByWizardInfo(); void initBlockConnection(); //初始化block之间的连接信息 void setOperateWizard(QPointer p) {_curWizard = p;} void showPreview(); //展示预览 DiagramEditorModel* getModel() {return _pModel;} EditScene* getScene() {return m_pEditScene;} QList getBlockItems(EditorItemType typ = EditorItemType::none); //返回block对应的item,如母线,间隔,变压器, none返回所有类型 public slots: void onWidthChanged(int width); void onContainerSizeChanged(EditContainerItem*); //容器大小改变时调整内部大小 void onItemDbClicked(QPointer); //item双击事件 private: void initial(); void calculateContainerWidth(EditContainerItem*); //根据间隔数量计算容器宽度 todo:区分上下间隔 int getContainerBusType(QMap>); //返回容器中母线类型(单双) EditBaseItem* getItemByName(const QString&); //根据名称获取指定item private: EditView* m_pEditView; EditScene* m_pEditScene; QVBoxLayout* _layout; EditMainRect* _mainWidget; DiagramEditorBayDetailSettingDlg* _bayDetailSetting; DiagramEditorTransDetailSettingDlg* _transDetailSetting; QGraphicsLinearLayout* _widgetLayout; QGraphicsProxyWidget* m_addBtnPro; int _maxWidth; int _maxHeight; QList _lstData; QMap> _mapStruct; QPointer _curWizard; DiagramEditorModel* _pModel; DiagramEditorPreviewDlg* _pPreview; }; #endif