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);
}
相关推荐
国服第二切图仔13 小时前
Qt-for-鸿蒙PC-多线程绘制开源鸿蒙开发实践
qt·开源·鸿蒙pc
国服第二切图仔15 小时前
Qt-for-鸿蒙PC-CheckBox开源鸿蒙开发实践
qt·开源·鸿蒙pc
喵个咪17 小时前
Qt 优雅实现线程安全单例模式(模板化 + 自动清理)
c++·后端·qt
离离茶21 小时前
【笔记1-8】Qt bug记录:QListWidget窗口的浏览模式切换为ListMode后,滚轮滚动速度变慢
笔记·qt·bug
共享家95271 天前
QT-系统(文件)
开发语言·qt·命令模式
IT从业者张某某1 天前
Qt-for-鸿蒙PC-TextEditorPro 多功能文本编辑器开源鸿蒙开发实践
qt·开源·harmonyos
IT从业者张某某1 天前
Qt-for-鸿蒙PC-验证码组件开发实战
开发语言·qt·harmonyos
全栈陈序员1 天前
Qt for HarmonyOS/weather 天气应用项目
开发语言·qt·华为·harmonyos
风闲12172 天前
Qt源码编译记录
开发语言·qt
864记忆2 天前
Qt c++的基础语法有哪些?
开发语言·c++·qt