131 lines
3.2 KiB
C++
131 lines
3.2 KiB
C++
#include "graphicsItem/electricSvgGroupCT.h"
|
|
#include "graphicsItem/electricSvgItemCT.h"
|
|
#include "graphicsDataModel/fixedPortsModel.h"
|
|
#include "baseProperty.h"
|
|
#include "global.h"
|
|
|
|
#include <QPainter>
|
|
#include <QStyleOption>
|
|
#include <QGraphicsScene>
|
|
#include <QGraphicsView>
|
|
|
|
ElectricSvgGroupCT::ElectricSvgGroupCT(const QRect &rect, QGraphicsItem *parent)
|
|
: ElectricSvgGroup(rect,parent)
|
|
{
|
|
initial();
|
|
}
|
|
|
|
ElectricSvgGroupCT::ElectricSvgGroupCT(const ElectricSvgGroupCT& obj)
|
|
:ElectricSvgGroup(obj)
|
|
{
|
|
initial();
|
|
_nType = obj._nType;
|
|
_nSize = obj._nSize;
|
|
}
|
|
|
|
ElectricSvgGroupCT::~ElectricSvgGroupCT()
|
|
{
|
|
|
|
}
|
|
|
|
ElectricSvgGroupCT* ElectricSvgGroupCT::clone() const
|
|
{
|
|
return new ElectricSvgGroupCT(*this);
|
|
}
|
|
|
|
void ElectricSvgGroupCT::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<QString,QByteArray> mapData;
|
|
if(!svgData.isEmpty()){
|
|
mapData["ct"] = svgData;
|
|
updateMapSvg(mapData,"ct");
|
|
updateItem();
|
|
}
|
|
QString sMeta;
|
|
QString sModel;
|
|
if(_property){
|
|
sMeta = _property->metaModelName();
|
|
sModel = _property->modelName();
|
|
}
|
|
|
|
if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty())
|
|
_pHandle->updateItemIcon(sMeta,sModel,mapData,"ct");
|
|
GraphicsBaseItem::setImage_1(info);
|
|
}
|
|
|
|
|
|
void ElectricSvgGroupCT::setupFinish(QVariant var)
|
|
{
|
|
if(var.canConvert<QPair<int,int>>()){
|
|
QPair<int,int> pair = var.value<QPair<int,int>>();
|
|
_nType = pair.first;
|
|
_nSize = pair.second;
|
|
}
|
|
updateItem();
|
|
}
|
|
|
|
void ElectricSvgGroupCT::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
|
{
|
|
ElectricSvgGroup::paint(painter,option,widget);
|
|
|
|
if(m_childItems.isEmpty()){ //无对象时绘制提示框
|
|
QPen pen(Qt::darkYellow);
|
|
pen.setStyle(Qt::DotLine);
|
|
painter->setPen(pen);
|
|
painter->drawRect(m_boundingRect);
|
|
}
|
|
}
|
|
|
|
void ElectricSvgGroupCT::initial()
|
|
{
|
|
setHandleIfShow(H_textCaption,false);
|
|
setHandleIfShow(H_textCurrent,false);
|
|
setHandleIfShow(h_textVoltage,false);
|
|
setHandleVisible(false);
|
|
setFunctionHandleIfShow(false);
|
|
setFunctionHandleEnaable(false);
|
|
if(!_itemImgIndex.contains("ct"))
|
|
_itemImgIndex.append("ct");
|
|
if(!_itemImgIndex.contains("zsct"))
|
|
_itemImgIndex.append("zsct");
|
|
}
|
|
|
|
void ElectricSvgGroupCT::updateItem()
|
|
{
|
|
for(auto pItem:m_childItems){
|
|
delete pItem;
|
|
}
|
|
m_childItems.clear();
|
|
|
|
QRect rec(0,0,90,30);
|
|
|
|
if(_nType == 1){
|
|
for(int i = 0;i < _nSize;++i){
|
|
ElectricSvgItemCT* p = new ElectricSvgItemCT(rec);
|
|
p->setItemType(_nType);
|
|
p->setMoveable(false);
|
|
p->loadSvg(m_mapSvg["ct"]);
|
|
addSvgItem(p);
|
|
}
|
|
}
|
|
else if(_nType == 0){
|
|
ElectricSvgItemCT* p = new ElectricSvgItemCT(rec);
|
|
p->setItemType(_nType);
|
|
p->setMoveable(false);
|
|
p->loadSvg(m_mapSvg["zsct"]);
|
|
addSvgItem(p);
|
|
}
|
|
updateTerPos();
|
|
}
|
|
|