add HMI text element

This commit is contained in:
baiYue 2026-03-27 14:32:11 +08:00
parent 742ea36c3d
commit 21c6fabc79
29 changed files with 243 additions and 47 deletions

View File

@ -177,7 +177,7 @@ public:
QString getContent() {return sContent;}
protected:
int nGraphicType = -1; //图形类型 0图像1文字
QString sContent;
QString sContent; //包含的文字
};
class BaseProperty:public ModelProperty //图像工程模模属性类,存放电路元件属性

View File

@ -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

View File

@ -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可对应多个itemid,类型,名称,工程模名)
void loadNodeDataFromDataBase(); //从数据库加载数据

View File

@ -0,0 +1,47 @@
#ifndef ELECTRICFUNCTIONMODELITEMTEXT_H
#define ELECTRICFUNCTIONMODELITEMTEXT_H
/*****************自定义文字*******************/
#include <QFont>
#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

View File

@ -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<QString,QByteArray> map,QString sIndex = ""); //工程模property不含图片额外存储
virtual void setMonitorDisplayInfo(QMap<MonitorItemStateStruct,MonitorItemDisplayInfo> 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;

View File

@ -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<QString,QByteArray> 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;

View File

@ -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;}

View File

@ -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); //数据状态改变
}

View File

@ -0,0 +1,98 @@
#include "graphicsItem/functionModelItem/electricFunctionModelItemText.h"
#include "graphicsDataModel/fixedPortsModel.h"
#include "baseProperty.h"
#include <QPainter>
#include <QStyleOption>
#include <QGraphicsScene>
#include <QGraphicsView>
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<GraphicProperty*>(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<QGraphicsItem>::setBoundingRect(m_boundingRect);
// 更新控制点
updateHandles();
}

View File

@ -135,6 +135,17 @@ void ElectricFunctionModelSvgGroup::setMonitorDisplayInfo(QMap<MonitorItemStateS
}
}
QFileInfo ElectricFunctionModelSvgGroup::getImage_1() const
{
return QFileInfo(m_bgImagePath);
}
void ElectricFunctionModelSvgGroup::setImage_1(QFileInfo info)
{
m_bgImagePath = info.absoluteFilePath();
}
void ElectricFunctionModelSvgGroup::addSvgItem(ElectricFunctionModelSvgItem* item)
{
item->setParentItem(this); // 关键:设置父项

View File

@ -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);
}

View File

@ -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)

View File

@ -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();
}

View File

@ -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)

View File

@ -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)

View File

@ -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()

View File

@ -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);
}

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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);
}

View File

@ -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)

View File

@ -6,6 +6,7 @@
#include <QStyleOption>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QSvgRenderer>
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");
}

View File

@ -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)

View File

@ -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)

View File

@ -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) //已经有对象
{

View File

@ -8,6 +8,7 @@
#include <QToolButton>
#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<ElectricFunctionModelItemText*>(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<QString,QByteArray> 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<ElectricFunctionModelItemText*>(pItem);
if(pText){
pText->setText(sContent);
pText->setFontSize(nFontSize);
pText->setTextColor(color);
pText->setBackColor(backColor);
}
}
}
}

View File

@ -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();