点击上方"蓝字"关注我们
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,否则返回 false。static 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 常用于绘制线条、边框、箭头等功能。
故我在
点击下方卡片 关注我
↓↓↓