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

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::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::FlatCap:不覆盖线终点的方形线端
- Qt::SquareCap:覆盖端点并超出终点线宽一半的方形线端
- Qt::RoundCap:圆形末端
线条连接样式
setJoinStyle(Qt::PenJoinStyle style)函数用于设置线条连接样式,参数是一个枚举类型 Qt::PenJoinStyle的常量,该枚举类型的取值及其绘图效果如下图所示。

各种线条连接样式
- Qt::MiterJoin:线的外边缘延伸以成一定角度相交,并填充此区域
- Qt::BevelJoin:填充两条线之间的三角形凹口
- Qt::RoundJoin:填充两条线之间的圆弧
默认样式是Qt::BevelJoin。应用Qt::MiterJoin 样式时,可以使用setMiterLimit()函数指定斜接连接可以从连接点延伸多远。miterLimit()必须以笔宽为单位指定。默认miter limit为2,即为笔宽度的两倍。

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