Qt二维绘图之改变Item的选中时的边框

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);



}

相关文章
相关标签/搜索