从零开始学Qt(57):一文读懂QPen的使用

从零开始学Qt(57):一文读懂QPen的使用QPen 用于绘图时对线条进行设置 主要包括线宽 颜色 线型等 下面是 QPen 类的主要接口函数 通常一个设置函数都有一个对应的读取函数 例如 setColor 用于设置画笔颜色 对应的读取画笔颜色的函数为 color 这里仅列出设置函数 省

大家好,欢迎来到IT知识分享网。

从零开始学Qt(57):一文读懂QPen的使用

QPen用于绘图时对线条进行设置,主要包括线宽、颜色、线型等,下面是QPen类的主要接口函数。通常一个设置函数都有一个对应的读取函数,例如setColor()用于设置画笔颜色,对应的读取画笔颜色的函数为color(),这里仅列出设置函数(省略了函数参数中的const关键字)。

  • void setColor(QColor &color):设置画笔颜色,即线条颜色
  • void setWidth(int width):设置线条宽度
  • void setStyle(Qt::PenStyle style):设置线条样式,参数为QPenStyle枚举类型
  • void setCapStyle(Qt::PenCapStyle style):设置线条端点样式,参数为QPenCapStyle枚举类型
  • void setJoinStyle (Qt::PenJoinStyle style): 设置连接样式,参数为QPenJoinStyle枚举类型

创建QPen的代码如下:

QPainter painter(this); QPen pen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin); painter.setPen(pen);

上述代码等同于

QPainter painter(this); QPen pen; pen.setStyle(Qt::DashDotLine); pen.setWidth(3); pen.setBrush(Qt::green); pen.setCapStyle(Qt::RoundCap); pen.setJoinStyle(Qt::RoundJoin); painter.setPen(pen);

线条颜色和宽度的设置无需多说,QPen影响线条特性的另外3个主要属性是线条样式(style)、 端点样式(capStyle)和连接样式(joinStyle)。

线条样式

setStyle(Qt::PenStyle style)函数用于设置线条样式,参数是一个枚举类型Qt::PenStyle的常量, 几种典型的线条样式的绘图效果如下图所示。QtPenStyle类型还有一个常量Qt::NoPen表示不绘制线条。

从零开始学Qt(57):一文读懂QPen的使用

各种样式的线条

  • Qt::NoPen:没有线条
  • Qt::SolidLine:一条普通的线
  • Qt::DashLine:由几个像素分隔的划线
  • Qt::DotLine:由几个像素分隔的点线
  • Qt::DashDotLine:交替的点划线
  • Qt::DashDotDotLine:一段划,两个点,一段划,两个点。

除了几种基本的线条样式外,用户还可以自定义线条样式(Qt::CustomDashLine),自定义线条样式时需要用到setDashOffset()和setDashPattem()函数。上图中自定义线条的代码为,

QPen pen; QVector<qreal> dashes; qreal space = 4; dashes << 1 << space << 3 << space << 9 << space << 27 << space << 9 << space; pen.setDashPattern(dashes);

线条端点样式

setCapStyle(Qt::PenCapStyle style)函数用于设置线条端点样式,参数是一个枚举类型 QPenCapStyle的常量,该枚举类型的3种取值及其绘图效果如下图所示。

从零开始学Qt(57):一文读懂QPen的使用

各种线条端点样式

  • Qt::FlatCap:不覆盖线终点的方形线端
  • Qt::SquareCap:覆盖端点并超出终点线宽一半的方形线端
  • Qt::RoundCap:圆形末端

线条连接样式

setJoinStyle(Qt::PenJoinStyle style)函数用于设置线条连接样式,参数是一个枚举类型 Qt::PenJoinStyle的常量,该枚举类型的取值及其绘图效果如下图所示。

从零开始学Qt(57):一文读懂QPen的使用

各种线条连接样式

  • Qt::MiterJoin:线的外边缘延伸以成一定角度相交,并填充此区域
  • Qt::BevelJoin:填充两条线之间的三角形凹口
  • Qt::RoundJoin:填充两条线之间的圆弧

默认样式是Qt::BevelJoin。应用Qt::MiterJoin 样式时,可以使用setMiterLimit()函数指定斜接连接可以从连接点延伸多远。miterLimit()必须以笔宽为单位指定。默认miter limit为2,即为笔宽度的两倍。

从零开始学Qt(57):一文读懂QPen的使用

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/182921.html

(0)
上一篇 2025-07-09 07:10
下一篇 2025-07-09 07:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信