QT QPen 学习记录

使用QT很多年了,一直没有系统性的总结一下QPen,今天又全面复习总结一下。

QPen 类定义了QPainter 应该怎样画线条和形状的轮廓。 


对于QPen 画笔有以下几个重要特性。

1.color(): 定义了线条的颜色。使用setColor(QColor(255, 0, 0, 100))定义画笔的颜色。


2.width():定义了线条的宽度。使用setWidth(int width)设置线条的宽度。

    这里有个特殊情况,要说明一下,按照我们的理解,如果setWidth(0)的话,应该是线条宽度为0,应该是不显示线条啊。可是实际不是这样,当设置为线条宽度为0的时候,相当于使用了sosmetic(美化笔,自己翻译的,可能不对),意味着画笔的宽度一直是1像素宽。

如果我们想不显示线条的话,怎么办?有两种方式:

    1> setStyle(Qt::NoPen)

    2> setWidth(-1)

这两种方式效果是一样的,都是不显示轮廓。


3.style() : 定义了线条的类型,使用setStyle()设置画笔线条的类型。

具体线条的类型和形状 有Qt::solidLine, 虚线Qt::dotLine, Qt::dashLine具体如下

Pen Style

Qt provides several built-in styles represented by the Qt::PenStyle enum:


QT QPen 学习记录_第1张图片

QT QPen 学习记录_第2张图片

QT QPen 学习记录_第3张图片

Qt::SolidLine

Qt::DashLine

Qt::DotLine

QT QPen 学习记录_第4张图片

QT QPen 学习记录_第5张图片

QT QPen 学习记录_第6张图片

Qt::DashDotLine

Qt::DashDotDotLine

Qt::CustomDashLine


    如果style设置为Qt::dashLine时候,我们怎样可以设置实线与空线(space)的比例呢?或者换种说法,我们怎样可以设置dashLine 两段实线相隔多远呢? 幸好,我们有种方法 setDashPattern();来控制dashLine这种线条实线与虚线的比例。具体用法如下

pen.setDashPattern(QVector() << 10 << 5 ) //实线:空线的比例为10 :5 。每10个单位长度的实线,然后每5个单位长度的虚线。

4.capStyle() :设置线条两头的形状,可以是矩形,也可以是圆形的头。通过setCapStyle()设置线条端点形状。

 有以下选择和相关形状。

enum Qt::PenCapStyle

QT QPen 学习记录_第7张图片

QT QPen 学习记录_第8张图片

QT QPen 学习记录_第9张图片

Qt::SquareCap

Qt::FlatCap

Qt::RoundCap


Constant  


Description

Qt::FlatCap 


a square line end that does not cover the end point of the line.//方形头部,但是并不包含最后一个点

Qt::SquareCap


a square line end that covers the end point and extends beyond it by half the line width.//方形顶端,并且包含最后一个点

Qt::RoundCap  


a rounded line end. //顶端是半圆形


5.joinStyle() 是两条线的连接点的类型。可以通过setJoinStyle()来设置两条线之间的连接点形状。

enum Qt::PenJoinStyle


QT QPen 学习记录_第10张图片

QT QPen 学习记录_第11张图片

QT QPen 学习记录_第12张图片

Qt::BevelJoin

Qt::MiterJoin

Qt::RoundJoin


Constant

Value

Description

Qt::MiterJoin

0x00

线的外缘延伸成一个角度,这个区域被填充。

Qt::BevelJoin

0x40

两条线之间的三角形缺口填满了。

Qt::RoundJoin

0x80

两条线之间有弧度,就是很圆滑

Qt::SvgMiterJoin

0x100

一个斜角连接对应一个斜切的定义加入SVG 1.2小规格。





你可能感兴趣的:(QT)