void RectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { QStyleOptionGraphicsItem op; op.initFrom(widget); // // 判断选中时,设置状态为 State_None if (option->state & QStyle::State_Selected){ qreal itemPenWidth = 10; const qreal pad = itemPenWidth / 2; const qreal penWidth = 0; // 边框区域颜色 QColor color = QColor(Qt::red); //绘制实现 painter->setPen(QPen(color, penWidth, Qt::SolidLine)); painter->setBrush(Qt::NoBrush); painter->drawRect(boundingRect().adjusted(pad, pad, -pad, -pad)); // 绘制虚线 painter->setPen(QPen(color, 0, Qt::DashLine)); painter->setBrush(Qt::NoBrush); painter->drawRect(boundingRect().adjusted(pad, pad, -pad, -pad)); qDebug() << "选中"; }else{ } //绘制图标,必须小于边框矩形 painter->setRenderHint( QPainter::Antialiasing ); painter->drawRect(m_x, m_y, m_w, m_h); }