Qt | 绘制直线与 QLineF 类

734 阅读3分钟

点击上方"蓝字"关注我们

01、绘制直线

02、Qline和QLineF

【1】QLine 是整型版本,成员函数较少,QLineF 是精度更高的浮点型版本,本文以 QLineF 类

进行讲解。

QLineF 类提供了一个二维向量,使用 QLineF 类绘制直线可以利用该类中的成员函数方便

的对线条的属性进行一些设置,比如可使用 setAngle()设置线条的角度,使用 angle()可获

取线条的角度等。下面为该类中的函数

1)、QLineF(); QLineF(const QLine &line)QLineF(const QPointF &p1, const QPointF &p2); //构造从 p1 到 p2 的线QLineF(qreal x1, qreal y1, qreal x2, qreal y2); //构造从(x1,y1)到(x2,y2)的线

【2】起点/终点与分量

QPointF p1() const; QPointF p2() const; qreal dx() const; qreal dy() const;qreal x1() const; qreal y1() const; qreal x2() const; qreal y2() constvoid setP1(const QPointF &p1); void setP2(const QPointF &p2);void setLine(qreal x1, qreal y1, qreal x2, qreal y2); void setPoints(const QPointF &p1, const QPointF &p2)

【3】角度与线的长度

qreal angle() const; //返回直线的角度,范围为 0~359 度void setAngle(qreal angle)qreal length() const; void setLength(qreal length)qreal angleTo(const QLineF &line) const; //该线需要旋转多少度才与线 line 的度数相同(注意,这不是指的两线相交的角度

【4】

QPointF pointAt(qreal t) const; //返回位于直线上 t*length()处的点。QLineF normalVector() const; //返回与此线有相同起点和长度并与该线垂直的线QLineF unitVector() const; //返回与此线有相同起点和方向,长度为 1.0 的线,即单位向量。

【5】相交

IntersectType intersect(const QLineF &line, QPointF *intersectionPoint) const

该线是否与线 line 相交,交 点保存于 intersectionPoint 指针中,若线条平行,则交点

不确定。枚举 IntersectType 表示相交的类型,见下表。

【6】偏移

void translate(const QPointF &offset);void translate(qreal dx, qreal dy);QLineF translated(const QPointF &offset) constQLineF translated(qreal dx, qreal dy) const

把直线沿 x 轴移动距离 dx,沿 y 轴移动距离 dy,负值向反方向移动。注意:移动的是

距离而不是位置(虽然 offset 是以点的形式表示的),其中 translate()会改变原直线,而

translated()不会改变原直线,但会返回一个偏移后的副本。原理见图

【7】其他

QPointF center() const; //返回该线的占点,相当于 0.5*p1() + 0.5*p2(); qt5.8QLine toLine() const; //返回此线的整数副本(注意:相应数值会被四舍五入为最近的整数)bool isNull() const; //若线未设置有效的起点和终点,则返回 true,否则返回 falsestatic QLineF fromPolar(qreal length, qreal angle); //静态的返回长度为 length,角度为 angle 的线,该线起点位于原点。bool operator!=(const QLineF &line) const;bool operator==(const QLineF &line) const;

2、示例

绘制图形时需要注意变量的作用域的问题,比如

QLineF 是 Qt 库中的一个类,用于表示二维平面上的直线。它可以用来创建、操作和显示直线。QLineF 类提供了许多方法来获取和设置直线的起点、终点、斜率、长度等属性。此外,它还支持一些几何运算,如求交点、裁剪等。在 Qt 的图形界面编程中,QLineF 常用于绘制线条、边框、箭头等功能。

故我在

点击下方卡片 关注我

↓↓↓