DiagramDesigner/diagramCavas/source/graphicsItem/electricSvgItemCT.cpp

74 lines
2.0 KiB
C++

#include "graphicsItem/electricSvgItemCT.h"
#include "global.h"
#include <QSvgRenderer>
#include <QPainter>
#include <QStyleOption>
#include <QGraphicsScene>
#include <QGraphicsView>
ElectricSvgItemCT::ElectricSvgItemCT(const QRect &rect, QGraphicsItem *parent)
: ElectricSvgItem(rect,parent)
{
/*setHandleIfShow(H_textCaption,false);
setHandleIfShow(H_textCurrent,false);
setHandleIfShow(h_textVoltage,false);
setHandleVisible(false);
setFunctionHandleIfShow(false);
setFunctionHandleEnaable(false);*/
initial();
}
ElectricSvgItemCT::ElectricSvgItemCT(const ElectricSvgItemCT& obj)
:ElectricSvgItem(obj)
{
initial();
_itemType = obj._itemType;
}
ElectricSvgItemCT::~ElectricSvgItemCT()
{
}
ElectricSvgItemCT* ElectricSvgItemCT::clone() const
{
return new ElectricSvgItemCT(*this);
}
void ElectricSvgItemCT::initial()
{
setFlag(QGraphicsItem::ItemIsSelectable, false);
setFlag(QGraphicsItem::ItemIsFocusable, false);
setAcceptedMouseButtons(Qt::NoButton);
}
void ElectricSvgItemCT::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
{
if (!m_pRender || !m_pRender->isValid())
return;
// 计算每个图形的宽度
qreal singleWidth = m_boundingRect.width() / 3.0;
// 绘制第一个图形
if(_itemType == 1){
QRectF rect1(m_boundingRect.x(), m_boundingRect.y(), singleWidth, m_boundingRect.height());
m_pRender->render(painter, rect1);
// 绘制第二个图形
QRectF rect2(m_boundingRect.x() + singleWidth, m_boundingRect.y(), singleWidth, m_boundingRect.height());
m_pRender->render(painter, rect2);
// 绘制第三个图形
QRectF rect3(m_boundingRect.x() + 2 * singleWidth, m_boundingRect.y(), singleWidth, m_boundingRect.height());
m_pRender->render(painter, rect3);
}
else if(_itemType == 0){
QRectF rect(m_boundingRect.x() + singleWidth, m_boundingRect.y(), singleWidth, m_boundingRect.height());
m_pRender->render(painter, rect);
}
}