diff --git a/common/include/baseProperty.h b/common/include/baseProperty.h index cc02803..3846452 100644 --- a/common/include/baseProperty.h +++ b/common/include/baseProperty.h @@ -177,7 +177,7 @@ public: QString getContent() {return sContent;} protected: int nGraphicType = -1; //图形类型 0图像1文字 - QString sContent; + QString sContent; //包含的文字 }; class BaseProperty:public ModelProperty //图像工程模模属性类,存放电路元件属性 diff --git a/diagramCavas/CMakeLists.txt b/diagramCavas/CMakeLists.txt index f300f69..5a751b6 100644 --- a/diagramCavas/CMakeLists.txt +++ b/diagramCavas/CMakeLists.txt @@ -87,6 +87,7 @@ set(DIAGRAMCAVAS_HEADER_FILES include/graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.h include/graphicsItem/functionModelItem/graphicsFunctionModelItem.h include/graphicsItem/functionModelItem/electricFunctionModelSvgItemImage.h + include/graphicsItem/functionModelItem/electricFunctionModelItemText.h include/baseModelItem/electricBaseModelSvgItem.h include/baseModelItem/electricBaseModelLineItem.h @@ -215,6 +216,7 @@ set(DIAGRAMCAVAS_SOURCE_FILES source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.cpp source/graphicsItem/functionModelItem/graphicsFunctionModelItem.cpp source/graphicsItem/functionModelItem/electricFunctionModelSvgItemImage.cpp + source/graphicsItem/functionModelItem/electricFunctionModelItemText.cpp source/baseModelItem/electricBaseModelSvgItem.cpp source/baseModelItem/electricBaseModelLineItem.cpp diff --git a/diagramCavas/include/graphicsDataModel/fixedPortsModel.h b/diagramCavas/include/graphicsDataModel/fixedPortsModel.h index 646b2e2..8690854 100644 --- a/diagramCavas/include/graphicsDataModel/fixedPortsModel.h +++ b/diagramCavas/include/graphicsDataModel/fixedPortsModel.h @@ -55,7 +55,7 @@ public: bool addNodeItem(QUuid uuid,GraphicsFunctionModelItem*); bool addGraphicItem(QUuid uuid,GraphicsFunctionModelItem*); QString addNodeItem(QUuid id,QPointF pos,double width = 0,double height = 0,double rotate = 0); - QString addGraphicItem(QUuid id,QString name,QPointF pos,int type,QString sContent = "",double width = 0,double height = 0,double rotate = 0); //0图形1文字 + GraphicsFunctionModelItem* addGraphicItem(QUuid id,QString name,QPointF pos,int type,QString sContent = "",double width = 0,double height = 0,double rotate = 0); //0图形1文字 GraphicsFunctionModelItem* nodeItem(QUuid uuid); BaseProperty* addNodeData(QUuid id,int type,QString name,QString modelName); //对应component数据,一个data可对应多个item(id,类型,名称,工程模名) void loadNodeDataFromDataBase(); //从数据库加载数据 diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelItemText.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelItemText.h new file mode 100644 index 0000000..97b694d --- /dev/null +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelItemText.h @@ -0,0 +1,47 @@ +#ifndef ELECTRICFUNCTIONMODELITEMTEXT_H +#define ELECTRICFUNCTIONMODELITEMTEXT_H + +/*****************自定义文字*******************/ +#include +#include "graphicsFunctionModelItem.h" + +class ElectricFunctionModelItemText :public GraphicsFunctionModelItem +{ + Q_OBJECT +public: + Q_PROPERTY(QString Text READ getText WRITE setText) + Q_PROPERTY(QColor Color READ getTextColor WRITE setTextColor) + Q_PROPERTY(QColor BackColor READ getBackColor WRITE setBackColor) + Q_PROPERTY(int FontSize READ getFontSize WRITE setFontSize) +public: + ElectricFunctionModelItemText(QGraphicsItem *parent = 0); + virtual ~ElectricFunctionModelItemText(); + + void setText(const QString& text); + QString getText() {return m_text;} + + void setTextColor(const QColor&); + QColor getTextColor() {return m_textColor;} + + void setBackColor(const QColor& color) {m_backgroundColor = color;} + QColor getBackColor() {return m_backgroundColor;} + + void setFontSize(int n); + int getFontSize() {return m_font.pointSize();} + + void setBackgroundVisible(bool visible) {m_backgroundVisible = visible;} + +protected: + virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; +private: + void initial(); + void updateBoundingRect(); + + QString m_text; + QColor m_textColor; + QColor m_backgroundColor = QColor(240, 240, 240, 100); + QFont m_font = QFont("Arial", 12); + bool m_backgroundVisible = false; +}; + +#endif diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.h index f9227a3..c7d204b 100644 --- a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.h +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.h @@ -9,6 +9,8 @@ class ElectricFunctionModelSvgItem; class ElectricFunctionModelSvgGroup :public GraphicsFunctionModelGroup { Q_OBJECT +public: + Q_PROPERTY(QFileInfo Image READ getImage_1 WRITE setImage_1) public: ElectricFunctionModelSvgGroup(const QRect &rect,QGraphicsItem *parent = 0); virtual ~ElectricFunctionModelSvgGroup(); @@ -18,6 +20,8 @@ public: virtual void addSvgItem(ElectricFunctionModelSvgItem* item); virtual void updateMapSvg(QMap map,QString sIndex = ""); //工程模property不含图片,额外存储 virtual void setMonitorDisplayInfo(QMap info) override; //将显示数据更新到子item中 + virtual QFileInfo getImage_1() const; + virtual void setImage_1(QFileInfo); protected: virtual QPainterPath shape() override; virtual void editShape(int, const QPointF&) override; diff --git a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem.h b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem.h index 6778619..1ccd4f9 100644 --- a/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem.h +++ b/diagramCavas/include/graphicsItem/functionModelItem/electricFunctionModelSvgItem.h @@ -6,6 +6,8 @@ class ElectricFunctionModelSvgItem :public GraphicsFunctionModelItem { Q_OBJECT +public: + Q_PROPERTY(QFileInfo Image READ getImage_1 WRITE setImage_1) public: ElectricFunctionModelSvgItem(const QRect &rect, bool genNewPort = true,QGraphicsItem *parent = 0); //genNewPort生成新接线点 virtual ~ElectricFunctionModelSvgItem(); @@ -16,6 +18,8 @@ public: virtual void loadSvg(QByteArray); //第二种load直接加载图片 virtual void updateMapSvg(QMap map,QString sIndex = ""); //index:空全部更新 virtual void updateCurState(MonitorItemState e) override; + virtual QFileInfo getImage_1() const; + virtual void setImage_1(QFileInfo); protected: virtual QPainterPath shape() override; virtual void editShape(int, const QPointF&) override; diff --git a/diagramCavas/include/graphicsItem/graphicsBaseItem.h b/diagramCavas/include/graphicsItem/graphicsBaseItem.h index 68dfa44..0b4d683 100644 --- a/diagramCavas/include/graphicsItem/graphicsBaseItem.h +++ b/diagramCavas/include/graphicsItem/graphicsBaseItem.h @@ -191,7 +191,6 @@ public: Q_PROPERTY(QPointF Position READ getPosition WRITE setPosition NOTIFY posChanged) Q_PROPERTY(QRectF Size READ getSize WRITE setSize) Q_PROPERTY(RotateAngle Rotation READ getRotateAngle WRITE setRotateAngle) - Q_PROPERTY(QFileInfo Image READ getImage_1 WRITE setImage_1) public: GraphicsBaseItem(QGraphicsItem *parent); GraphicsBaseItem(const GraphicsBaseItem&); @@ -209,14 +208,13 @@ public: virtual void setSize(QRectF); virtual RotateAngle getRotateAngle() const; virtual void setRotateAngle(RotateAngle); - virtual QFileInfo getImage_1() const; - virtual void setImage_1(QFileInfo); + public: int addPort(PortState typ,QPointF vec,QString id = "",HandleType hType = T_lineInOut,PortPos pos = P_top,double dXPercent = 0,double dYPercent = 0); //新建,返回-1失败 virtual void movePort(QString id,QPointF vec); //移动可动点 virtual void setEntity(PowerEntity*); //设置当前图元的拓扑数据 virtual PowerEntity* entity(); - virtual void setProperty(ModelProperty* p); + virtual void bindProperty(ModelProperty* p); virtual ModelProperty* getProperty() {return _property;} virtual void updateByProperty(){}; //使用data对象更新自己 virtual void setItemChanged(bool b){_itemChanged = b;} diff --git a/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp b/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp index 8d75690..7a335a6 100644 --- a/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp +++ b/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp @@ -20,6 +20,7 @@ #include "graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.h" #include "graphicsItem/functionModelItem/electricFunctionModelConnectLineItem.h" #include "graphicsItem/functionModelItem/electricFunctionModelSvgItemImage.h" +#include "graphicsItem/functionModelItem/electricFunctionModelItemText.h" #include "graphicsItem/itemPort.h" #include "designerScene.h" @@ -184,12 +185,12 @@ bool FixedPortsModel::addGraphicItem(QUuid uuid,GraphicsFunctionModelItem* pItem } } -QString FixedPortsModel::addGraphicItem(QUuid id,QString name,QPointF pos,int type,QString sContent,double width,double height,double rotate) +GraphicsFunctionModelItem* FixedPortsModel::addGraphicItem(QUuid id,QString name,QPointF pos,int type,QString sContent,double width,double height,double rotate) { GraphicProperty* pro = nullptr; GraphicsFunctionModelItem* item = nullptr; if(_graphicItem.contains(id)) - return "exist"; + return _graphicItem.value(id); double dX = 0.0; double dY = 0.0; if(type == 0){ //图像 @@ -211,7 +212,15 @@ QString FixedPortsModel::addGraphicItem(QUuid id,QString name,QPointF pos,int ty //pro->setContent(); } else if(type == 1){ //文字 - //pro = new ModelProperty(); + auto pText = new ElectricFunctionModelItemText(); + item = pText; + pText->setText(sContent); + item->setItemType(GIT_Text); + pro = new GraphicProperty(item); + pro->setGraphicsType(GIT_Text); + pro->setModelName("text"); + pro->setGraphicType(1); + pro->setContent(sContent); } if(item) @@ -224,7 +233,7 @@ QString FixedPortsModel::addGraphicItem(QUuid id,QString name,QPointF pos,int ty item->setRotation(rotate); _scene->addItem(item); item->addPoint(pos); - item->setProperty(pro); //绑定模型 + item->bindProperty(pro); //绑定模型 //item->updateByProperty(); //使用模型更新自身 item->setHandle(this); _graphicItem.insert(id,item); @@ -236,7 +245,7 @@ QString FixedPortsModel::addGraphicItem(QUuid id,QString name,QPointF pos,int ty } } - return pro?pro->name():"err"; + return item; } QString FixedPortsModel::addNodeItem(QUuid id,QPointF pos,double width,double height,double rotate) @@ -726,7 +735,7 @@ QString FixedPortsModel::addNodeItem(QUuid id,QPointF pos,double width,double he item->setRotation(rotate); _scene->addItem(item); item->addPoint(pos); - item->setProperty(pro); //绑定模型 + item->bindProperty(pro); //绑定模型 item->updateByProperty(); //使用模型更新自身 item->setHandle(this); _nodeItem.insert(id,item); @@ -928,7 +937,7 @@ QString FixedPortsModel::addConnectLline(QUuid lineId,QUuid srcId,QUuid destId,Q ptDest->setConnect(pItem); addNodeItem(pItem->itemId(),pItem); - pItem->setProperty(pPro); + pItem->bindProperty(pPro); } return pPro->name(); @@ -1592,7 +1601,7 @@ void FixedPortsModel::onSignal_ifExits(QUuid id,const QString& str,int type,Grap case QMessageBox::Ok: { //todo:断开原来的连接关系 - pitem->setProperty(pData); + pitem->bindProperty(pData); pitem->setItemId(pData->uuid()); PowerEntity* pEntity = TopologyManager::instance().findEntity(pData->uuid().toString()); if(pEntity){ @@ -1615,7 +1624,7 @@ void FixedPortsModel::onSignal_ifExits(QUuid id,const QString& str,int type,Grap BaseProperty* pData = addNodeData(id,type,str,pitem->getModelName()); if(pData) { - pitem->setProperty(pData); + pitem->bindProperty(pData); pData->setDataChanged(true); //数据状态改变 } diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelItemText.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelItemText.cpp new file mode 100644 index 0000000..5d33975 --- /dev/null +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelItemText.cpp @@ -0,0 +1,98 @@ +#include "graphicsItem/functionModelItem/electricFunctionModelItemText.h" +#include "graphicsDataModel/fixedPortsModel.h" +#include "baseProperty.h" + +#include +#include +#include +#include + +ElectricFunctionModelItemText::ElectricFunctionModelItemText(QGraphicsItem *parent) + : GraphicsFunctionModelItem(parent) +{ + initial(); +} + +ElectricFunctionModelItemText::~ElectricFunctionModelItemText() +{ + +} + +void ElectricFunctionModelItemText::setText(const QString& text) +{ + if (m_text != text) { + m_text = text; + updateBoundingRect(); + update(); // 触发重绘 + // 标记为已修改 + setItemChanged(true); + auto pPro = dynamic_cast(getProperty()); + if(pPro){ + pPro->setContent(text); //同步修改属性值 + } + } +} + +void ElectricFunctionModelItemText::setTextColor(const QColor& color) +{ + m_textColor = color; +} + +void ElectricFunctionModelItemText::setFontSize(int n) +{ + if(n>0 && n <100){ + m_font.setPointSize(n); + updateBoundingRect(); + } +} + +void ElectricFunctionModelItemText::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + // 1. 绘制背景 + if (m_backgroundVisible) { + painter->setBrush(m_backgroundColor); + painter->setPen(Qt::NoPen); + painter->drawRect(m_boundingRect); + } + + // 2. 绘制文本 + painter->setFont(m_font); + painter->setPen(m_textColor); + + QRectF textRect = m_boundingRect.adjusted(2, 2, -2, -2); + painter->drawText(textRect, Qt::AlignCenter, m_text); + + // 3. 调用基类绘制(选中框、控制点) + if (option->state & QStyle::State_Selected) //是选中状态,绘制选中框 + { + renderSelectBackground(painter); + } + GraphicsFunctionModelItem::paint(painter,option,widget); +} + +void ElectricFunctionModelItemText::initial() +{ + setHandleIfShow(H_textCaption,false); + setHandleVisible(false); + setFunctionHandleIfShow(false); + setFunctionHandleEnaable(false); + + m_boundingRect = QRectF(0, 0, 50, 20); //初始化为定值 +} + +void ElectricFunctionModelItemText::updateBoundingRect() +{ + if (m_text.isEmpty()) { + m_boundingRect = QRectF(0, 0, 50, 20); + } else { + QFontMetricsF fm(m_font); + QRectF textRect = fm.boundingRect(m_text); + m_boundingRect = textRect.adjusted(-4, -4, 4, 4); + } + + // 更新基类边界 + AbstractShapeType::setBoundingRect(m_boundingRect); + + // 更新控制点 + updateHandles(); +} diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.cpp index ec1f7e2..96971e1 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.cpp @@ -135,6 +135,17 @@ void ElectricFunctionModelSvgGroup::setMonitorDisplayInfo(QMapsetParentItem(this); // 关键:设置父项 diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.cpp index 2e03df4..f8c3c44 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.cpp @@ -48,7 +48,7 @@ void ElectricFunctionModelSvgGroupCT::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"ct",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgGroup::setImage_1(info); } diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.cpp index d3d5962..ed0972b 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.cpp @@ -48,7 +48,7 @@ void ElectricFunctionModelSvgGroupPT::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"pt",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgGroup::setImage_1(info); } void ElectricFunctionModelSvgGroupPT::setupFinish(QVariant var) diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem.cpp index 497f2d5..06ca625 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem.cpp @@ -187,3 +187,13 @@ void ElectricFunctionModelSvgItem::updateCurState(MonitorItemState e) m_pCustomRender->load(_curMonitorStateSvg); } } + +QFileInfo ElectricFunctionModelSvgItem::getImage_1() const +{ + return QFileInfo(m_bgImagePath); +} + +void ElectricFunctionModelSvgItem::setImage_1(QFileInfo info) +{ + m_bgImagePath = info.absoluteFilePath(); +} diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.cpp index ab3b3aa..d1714c2 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.cpp @@ -50,7 +50,7 @@ void ElectricFunctionModelSvgItem2wTransformer::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"transformer_2w",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } void ElectricFunctionModelSvgItem2wTransformer::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.cpp index 5d2b506..51b6d30 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.cpp @@ -49,7 +49,7 @@ void ElectricFunctionModelSvgItem3wTransformer::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"transformer_3w",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } void ElectricFunctionModelSvgItem3wTransformer::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.cpp index 2eaf9bf..8ebad78 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.cpp @@ -52,7 +52,7 @@ void ElectricFunctionModelSvgItemBus::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"bus",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } void ElectricFunctionModelSvgItemBus::updateHandles() diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.cpp index 603eafe..3a8aca1 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.cpp @@ -51,7 +51,7 @@ void ElectricFunctionModelSvgItemCB::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"cb",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.cpp index 0597aac..389c2c9 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.cpp @@ -50,7 +50,7 @@ void ElectricFunctionModelSvgItemCableEnd::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"cable_end",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } void ElectricFunctionModelSvgItemCableEnd::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.cpp index 73edf0d..9ca012a 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.cpp @@ -50,7 +50,7 @@ void ElectricFunctionModelSvgItemCableTer::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"cable_termination",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } void ElectricFunctionModelSvgItemCableTer::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.cpp index 97a9a25..68941e2 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.cpp @@ -50,7 +50,7 @@ void ElectricFunctionModelSvgItemDS::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"ds",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } void ElectricFunctionModelSvgItemDS::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.cpp index d8251aa..3f0fc10 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.cpp @@ -50,7 +50,7 @@ void ElectricFunctionModelSvgItemDTEDS::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"dteds",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } void ElectricFunctionModelSvgItemDTEDS::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.cpp index c980923..e807d44 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.cpp @@ -50,7 +50,7 @@ void ElectricFunctionModelSvgItemES::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"es",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.cpp index 2c74df2..689c425 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.cpp @@ -50,7 +50,7 @@ void ElectricFunctionModelSvgItemFES::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"fes",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } void ElectricFunctionModelSvgItemFES::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemImage.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemImage.cpp index 592b24b..ac1938f 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemImage.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemImage.cpp @@ -6,6 +6,7 @@ #include #include #include +#include ElectricFunctionModelSvgItemImage::ElectricFunctionModelSvgItemImage(const QRect &rect, QGraphicsItem *parent) : ElectricFunctionModelSvgItem(rect,parent) @@ -50,12 +51,17 @@ void ElectricFunctionModelSvgItemImage::setImage_1(QFileInfo info) if(_pHandle) _pHandle->updateCustomItemIcon(itemId,mapData); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } void ElectricFunctionModelSvgItemImage::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) { + if(!m_pRender){ + painter->setPen(QPen(QColor(238,58,140,220))); + painter->drawRect(m_boundingRect); + } + ElectricFunctionModelSvgItem::paint(painter,option,widget); } @@ -65,7 +71,5 @@ void ElectricFunctionModelSvgItemImage::initial() setHandleVisible(false); setFunctionHandleIfShow(false); setFunctionHandleEnaable(false); - if(!_itemImgIndex.contains("es")) - _itemImgIndex.append("es"); } diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.cpp index 9405af4..ed56751 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.cpp @@ -50,7 +50,7 @@ void ElectricFunctionModelSvgItemLA::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"lightning_arrester",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } void ElectricFunctionModelSvgItemLA::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) diff --git a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.cpp b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.cpp index 3665169..86c2e8e 100644 --- a/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.cpp +++ b/diagramCavas/source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.cpp @@ -51,7 +51,7 @@ void ElectricFunctionModelSvgItemPI::setImage_1(QFileInfo info) if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty()) _pHandle->updateItemIcon(sMeta,sModel,mapData,"potential_indicator",nType,0); - GraphicsBaseItem::setImage_1(info); + ElectricFunctionModelSvgItem::setImage_1(info); } void ElectricFunctionModelSvgItemPI::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) diff --git a/diagramCavas/source/graphicsItem/graphicsBaseItem.cpp b/diagramCavas/source/graphicsItem/graphicsBaseItem.cpp index d50975e..ef22987 100644 --- a/diagramCavas/source/graphicsItem/graphicsBaseItem.cpp +++ b/diagramCavas/source/graphicsItem/graphicsBaseItem.cpp @@ -136,16 +136,6 @@ void GraphicsBaseItem::setRotateAngle(RotateAngle angle) emit itemRotated(this); } -QFileInfo GraphicsBaseItem::getImage_1() const -{ - return QFileInfo(m_bgImagePath); -} - -void GraphicsBaseItem::setImage_1(QFileInfo info) -{ - m_bgImagePath = info.absoluteFilePath(); -} - int GraphicsBaseItem::addPort(PortState typ,QPointF vec,QString id,HandleType hType,PortPos pos,double dXPercent,double dYPercent) { int ntagId = -1; @@ -201,7 +191,7 @@ PowerEntity* GraphicsBaseItem::entity() return _pEntity; } -void GraphicsBaseItem::setProperty(ModelProperty* p) +void GraphicsBaseItem::bindProperty(ModelProperty* p) { if(_property) //已经有对象 { diff --git a/diagramCavas/source/monitorPanel.cpp b/diagramCavas/source/monitorPanel.cpp index cdb7be3..5ac9f0c 100644 --- a/diagramCavas/source/monitorPanel.cpp +++ b/diagramCavas/source/monitorPanel.cpp @@ -8,6 +8,7 @@ #include #include "graphicsDataModel/fixedPortsModel.h" #include "graphicsItem/functionModelItem/graphicsFunctionModelItem.h" +#include "graphicsItem/functionModelItem/electricFunctionModelItemText.h" #include "powerEntity.h" #include "statusBar.h" #include "baseProperty.h" @@ -176,6 +177,15 @@ QJsonObject MonitorPanel::getDiagramInfo() node["type"] = pPro->getGraphicType(); node["modeName"] = pPro->modelName(); node["content"] = pPro->getContent(); + + if(pPro->getGraphicType() == 1){ //文字类 + auto pText = dynamic_cast(pItem); + if(pText){ + node["color"] = pText->getTextColor().name(); + node["backColor"] = pText->getBackColor().name(); + node["fontSize"] = pText->getFontSize(); + } + } } arrGraphic.append(node); } @@ -264,6 +274,9 @@ void MonitorPanel::loadNodes(QJsonObject obj) int nType = node["type"].toInt(); //图形item的类型 0图像1文字 QString sModeName = node["modeName"].toString(); //模型名,定值 QString sContent = node["content"].toString(); + int nFontSize = node["fontSize"].toInt(); + QColor color = QColor(node["color"].toString()); + QColor backColor = QColor(node["backColor"].toString()); double dX = node["x"].toDouble(); double dY = node["y"].toDouble(); double dWidth = node["width"].toDouble(); @@ -272,8 +285,8 @@ void MonitorPanel::loadNodes(QJsonObject obj) if(_pModel) { - QString res = _pModel->addGraphicItem(itemId,sName,QPointF(dX,dY),nType,sModeName,dWidth,dHeight,dRotate); //创建图形对象 - if(res != "err"){ + auto pItem = _pModel->addGraphicItem(itemId,sName,QPointF(dX,dY),nType,sModeName,dWidth,dHeight,dRotate); //创建图形对象 + if(pItem){ if(nType == 0){ //图片类型 QMap mapData; for(auto& customRef:lstRef){ @@ -287,7 +300,13 @@ void MonitorPanel::loadNodes(QJsonObject obj) _pModel->updateCustomById(itemId,mapData); //更新item引用的图片 } else if(nType == 1){ //文字类型 - + auto pText = dynamic_cast(pItem); + if(pText){ + pText->setText(sContent); + pText->setFontSize(nFontSize); + pText->setTextColor(color); + pText->setBackColor(backColor); + } } } } diff --git a/diagramCavas/source/util/baseSelector.cpp b/diagramCavas/source/util/baseSelector.cpp index 95f84d3..4b211c5 100644 --- a/diagramCavas/source/util/baseSelector.cpp +++ b/diagramCavas/source/util/baseSelector.cpp @@ -594,7 +594,7 @@ void BaseSelector::dropEvent(QGraphicsSceneDragDropEvent *event, DesignerScene*, _model->addGraphicItem(QUuid::createUuid(),"",event->scenePos(),nGraphicType); } else{ - + _model->addGraphicItem(QUuid::createUuid(),"",event->scenePos(),nGraphicType,"文本对象"); } event->acceptProposedAction();