#include "coil.h" #include #include Coil::Coil(const QString &type) : Item(type) { } void Coil::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *) { painter->setRenderHint(QPainter::Antialiasing); if (type_ == "线圈") { // 绘制线圈样式: 两边线段+中间椭圆 painter->drawLine(-12, 0, -5, 0); painter->drawEllipse(QRectF(-5, -8, 10, 16)); painter->drawLine(5, 0, 12, 0); // 画锚点 painter->setBrush(Qt::darkGray); painter->setPen(Qt::NoPen); painter->drawEllipse(QPointF(-12, 0), 4, 4); // 左锚点 painter->drawEllipse(QPointF(12, 0), 4, 4); // 右锚点 } if (!registerId_.isEmpty()) { painter->save(); painter->setFont(QFont("Arial", 8)); painter->setPen(Qt::black); // 在元件底部居中绘制寄存器ID painter->drawText(boundingRect().adjusted(0, 20, 0, 0), Qt::AlignCenter, registerId_); painter->restore(); } if (option->state & QStyle::State_Selected) { QPen pen(Qt::DashLine); pen.setColor(Qt::blue); pen.setWidth(2); painter->setPen(pen); painter->setBrush(Qt::NoBrush); painter->drawRect(boundingRect()); } }