一、描述
QLineF类使用浮点精度提供二维矢量。QLineF使用浮点精度来定义坐标线的起点和终点。
二、类型成员
QLineF::IntersectType:描述两条线之间的相交类型。
- QLineF::NoIntersection:不相交,平行。
- QLineF::UnboundedIntersection:不直接相交但延长线相交。
- QLineF::BoundedIntersection:直接相交。
三、成员函数
1、qreal angle()
返回直线的角度(以度为单位)。返回值将在0.0到但不包括360.0的范围内。 角度是从x轴上的点到原点右侧(x> 0)逆时针测量的。
2、qreal angleTo(const QLineF &line)
返回两线夹角,并考虑线的方向。如果线不在其范围内相交,则以延伸线的交点作为原点。
3、QPointF center()
返回线的中点。
4、[static] QLineF fromPolar(qreal length, qreal angle)
使用长度和角度构造一条线段。其起点将在原点上。角度的正值表示逆时针方向,而负值表示顺时针方向。零度在3点钟位置。
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setPen(QPen(Qt::cyan,5));
painter.drawLine(QLineF::fromPolar(100,-30));
}
5、QLineF::IntersectType intersect(const QLineF &line, QPointF *intersectionPoint)
获取两条直线的相交类型,如果相交(未直接相交也算),焦点付给参数2。
QPainter painter(this);
painter.setPen(QPen(Qt::cyan,5));
QLineF l1(QPointF(50,50),QPointF(100,100));
QLineF l2(QPointF(100,50),QPointF(50,100));
painter.drawLine(l1);
painter.drawLine(l2);
painter.setPen(QPen(Qt::red,5));
QPointF intersectionPoint;
auto type = l1.intersect(l2,&intersectionPoint);
painter.drawEllipse(intersectionPoint,3,3);
QLineF l2(QPointF(20,40),QPointF(20,200));
是否未设置起始点和终点。
7、qreal length()
获取长度。
8、QLineF normalVector()
返回一条与当前线段垂直且长度相同的线段。
9、QPointF pointAt(qreal t)
返回由t指定的参数化位置上的点。如果t = 0,该函数返回直线的起点,如果t = 1,则返回直线的终点。
10、void setAngle(qreal angle)
设置角度。这将改变线的第二点的位置。
11、void setLength(qreal length)
设置长度。这将改变线的第二点的位置。如果该行是空线段,则不管指定的长度如何,该长度都将保持为零。
12、QLine toLine()
返回基于整数的副本。返回的行的起点和终点四舍五入为最接近的整数。
13、void translate(const QPointF &offset)
用给定的偏移量平移线段。
14、QLineF translated(const QPointF &offset)
返回平移后的副本。
15、QLineF unitVector()
返回线段的单位向量。线段的单位向量的长度为1,方向与线段相同。单位向量。
QLineF l1(QPointF(50,50),QPointF(100,100));
auto v = l1.unitVector();
qDebug()<<"单位向量长度:"<<v.length();
qDebug()<<"单位向量角度:"<<v.angle();
qDebug()<<"线段长度:"<<l1.length();
qDebug()<<"线段角度:"<<l1.angle();