Qt多边形填充/不填充绘制

1 填充多边形绘制形式

cpp 复制代码
void GraphicsPolygonItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    Q_UNUSED(option);
    Q_UNUSED(widget);

    //painter->setPen(pen());      // 设置默认画笔
    //painter->setBrush(brush());  // 设置默认画刷

    // 创建一个线性渐变的笔刷,
    // 不仅会根据设定的画笔(pen())绘制多边形的轮廓,还会使用当前设置的笔刷(即线性渐变)来填充多边形内部区域。
    QColor c = brushColor();
    QLinearGradient result(boundingRect().topLeft(), boundingRect().topRight());
    result.setColorAt(0, c.dark(150));
    result.setColorAt(0.5, c.light(200));
    result.setColorAt(1, c.dark(150));
    painter->setBrush(result);

    // 设置画笔并绘制多边形
    painter->setPen(pen());  // 默认画笔参数,绘制多边形边缘
    painter->drawPolygon(m_points);

    // 如果项被选中,绘制选中高亮效果
    if (option->state & QStyle::State_Selected)
        qt_graphicsItem_highlightSelected(this, painter, option);
}

2 不填充

只通过画笔,绘制多边形轮廓

cpp 复制代码
void GraphicsPolygonItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
{
    Q_UNUSED(option);
    Q_UNUSED(widget);

    // 创建一个红色的画笔,并设置线宽为1
    QPen pen;
    pen.setColor(Qt::red);
    pen.setWidth(1);

    // 设置画笔并绘制多边形
    painter->setPen(pen);
    painter->setBrush(Qt::NoBrush);  // 不填充
    painter->drawPolygon(m_points);

    // 如果项被选中,绘制选中高亮效果
    if (option->state & QStyle::State_Selected)
        qt_graphicsItem_highlightSelected(this, painter, option);
}
相关推荐
孤独的追光者2 小时前
使用Qt Designer开发上位机
开发语言·python·qt
Molesidy9 小时前
【随笔】【QT】QT5.15.2版本的最新下载方式!!!
开发语言·qt
梨轻巧10 小时前
pyside6的历史发展、Qt 介绍、PyQt 和 pyside6对比
qt·pyqt
恋恋西风17 小时前
Qt 打开文件列表选择文件,实现拖拽方式打开文件,拖拽加载
开发语言·qt
奔跑吧 android17 小时前
【Qt】【1. 版本特性介绍】
qt·cpp·qml
西贝爱学习1 天前
【QT】安装包
开发语言·qt
郝学胜-神的一滴1 天前
QAxios研发笔记(二):在Qt环境下基于Promise风格简化Http的Post请求
开发语言·c++·笔记·qt·网络协议·程序人生·http
鄃鳕1 天前
pyside6 qt 事件循环
开发语言·qt
wangjialelele2 天前
Qt中的常用组件:QWidget篇
开发语言·前端·c++·qt
春蕾夏荷_7282977252 天前
qcustomplot 显示坐标轴
qt·qcustomplot·坐标轴