#include "graphicsItem/functionModelItem/electricFunctionModelSvgItemImage.h" #include "graphicsDataModel/fixedPortsModel.h" #include "baseProperty.h" #include #include #include #include #include ElectricFunctionModelSvgItemImage::ElectricFunctionModelSvgItemImage(const QRect &rect, QGraphicsItem *parent) : ElectricFunctionModelSvgItem(rect,parent) { initial(); } ElectricFunctionModelSvgItemImage::~ElectricFunctionModelSvgItemImage() { } void ElectricFunctionModelSvgItemImage::setImage_1(QFileInfo info) { QByteArray svgData; QFile svgFile(info.absoluteFilePath()); if (svgFile.open(QIODevice::ReadOnly)) { svgData = svgFile.readAll(); svgFile.close(); } else { qDebug() << "can't open imgfile" << svgFile.errorString(); } QMap mapData; if(!svgData.isEmpty()){ mapData["customImage"] = svgData; updateMapSvg(mapData,"customImage"); loadSvg(svgData); updateItem(); } QString sMeta; QString sModel; QUuid itemId; if(_property){ sMeta = _property->metaModelName(); sModel = _property->modelName(); itemId = _property->uuid(); } if(_pHandle) _pHandle->updateCustomItemIcon(itemId,mapData); 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); } painter->setFont(m_font); painter->setPen(m_textColor); //QRectF textRect = m_boundingRect.adjusted(2, 2, -2, -2); painter->drawText(m_boundingRect, Qt::AlignCenter, m_text); ElectricFunctionModelSvgItem::paint(painter,option,widget); } void ElectricFunctionModelSvgItemImage::initial() { setHandleIfShow(H_textCaption,false); setHandleVisible(false); setFunctionHandleIfShow(false); setFunctionHandleEnaable(false); } void ElectricFunctionModelSvgItemImage::setText(const QString& text) { if (m_text != text) { m_text = text; update(); // 触发重绘 // 标记为已修改 setItemChanged(true); auto pPro = dynamic_cast(getProperty()); if(pPro){ pPro->setContent(text); //同步修改属性值 } } } void ElectricFunctionModelSvgItemImage::setFontSize(int n) { if(n>0 && n <100){ m_font.setPointSize(n); } }