Qt技巧笔记(九):QPen 画笔类简介及绘图实践指南

📅 发布时间:2026/7/8 7:31:59 👁️ 浏览次数:
Qt技巧笔记(九):QPen 画笔类简介及绘图实践指南
Qt技巧笔记九QPen 画笔类简介及绘图实践指南QPen 是Qt绘图系统中用于定义线条如轮廓线边框线样式颜色、宽度、风格等的类。其构造函数QPen()。 是Qt框架中用于定义如何绘制形状轮廓线条的一个非常重要的类。它控制QPainter 绘制线条、曲线和形状轮廓的外观它包括线宽、颜色、样式、端点风格和连接风格等。一基本属性简介QPen主要用于设置以下属性主要属性属性功能线条宽度Color线条的粗细像素线条颜色Width支持QColor、RGB 值或预定义颜色如Qt::red线条样式Style如实线、虚线、点线等。端点风格Cap Style线条端点的渲染方式方形、圆形等。连接风格Joint Style多条线段连接处的渲染方式斜接、圆角等。画刷 Brush实际上填充线条的颜色是由QBrush决定的。如果你设置了一个渐变画刷给QPen可以绘制出渐变色的线条。常用样式枚举值样条样式Qt.PenStyleQt.SolidLine实线Qt.DashLine虚线由较短的线段组成。Qt.DotLine点线由点组成。Qt.DashDotLine点划线交替的线段和点。Qt.DashDotDotLine双点划线。Qt.NoPen不绘制线条通常用于不需要边框的情况。端点样式 Qt.PenCapStyleQt.FlatCap线条末端是方形的不覆盖端点坐标。Qt.SquareCap线条末端是方形的但会覆盖端点坐标比FlatCap稍微长一点。Qt.RoundCap线条末端是圆形的。连接样式Qt.RoundJoinStyleQt.MiterJoin尖角连接。Qt.BevelJoin平角连接切角。Qt.RoundJoin圆角连接。设置样条样式/* by 01022.hk - online tools website : 01022.hk/zh/generatebscwallets.html */ setStyle(Qt::PenStyle style);设置样条宽度/* by 01022.hk - online tools website : 01022.hk/zh/generatebscwallets.html */ setWidth(int width); // 整数宽度默认 setWidthF(qreal width); // 浮点宽度高精度设置颜色setColor(const QColor color);设置端点风格setCapStyle(Qt::PenCapStyle cap);设置连接风格setCapStyle(Qt::PenCapStyle cap);始终在创建QPen对象后显式地设置您需要的颜色和宽度。QPen(); // 默认构造函数黑色 1px 实线 QPen(const QColor color); // 指定颜色 QPen(const QBrush brush, qreal width); // 指定画刷和宽度 QPen(const QBrush brush, qreal width, Qt::PenStyle style); // 完整参数二示例用法2.1基本用法QPainter painter(this); QPen pen(Qt::blue, 2, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin); painter.setPen(pen); painter.drawLine(10, 10, 100, 100);2.2动态修改属性QPen pen; pen.setColor(Qt::red); pen.setWidth(3); pen.setStyle(Qt::DotLine); painter.setPen(pen); painter.drawRect(50, 50, 100, 100);2.3 自定义虚线QPen pen(Qt::black, 2); QVectorqreal pattern; pattern 1 3 5 3; // 自定义虚线模式 pen.setDashPattern(pattern); painter.setPen(pen); painter.drawEllipse(100, 100, 50, 50);2.4 结合QBrush使用QPen pen(QBrush(Qt::green, Qt::DiagCrossPattern), 3); painter.setPen(pen); painter.drawLine(20, 20, 200, 20);2.5 与QPainter配合使用QPen需通过QPainter::setPen()应用到绘制操作中void MyWidget::paintEvent(QPaintEvent *event) { QPainter painter(this); // 设置画笔 QPen pen(Qt::blue, 2, Qt::SolidLine); painter.setPen(pen); // 绘制线条和形状 painter.drawLine(10, 10, 100, 100); painter.drawRect(50, 50, 100, 100); // 更换画笔 pen.setColor(Qt::red); pen.setStyle(Qt::DashLine); painter.setPen(pen); painter.drawEllipse(100, 100, 50, 50); }常见应用场景绘图工具实现不同粗细、颜色的画笔。数据可视化绘制折线图、柱状图的边框。界面设计自定义控件的边框、指示器。CAD/图形软件精确控制线条渲染。