Qt基础类04-浮点直线类QLineF
- 摘要
- 基本信息
- 成员函数
-
- 程序全貌
- qreal QLineF::angle() const
- qreal QLineF::angleTo(const QLineF &line) const
- [static] QLineF QLineF::fromPolar(qreal length, qreal angle)
- QLineF::IntersectType QLineF::intersect(const QLineF &&line, QPointF *intersectionPoint) const
- qreal QLineF::length() const
- QLineF QLineF::normalVector() const
- QPointF QLineF::pointAt(qreal t) const
- QLine QLineF::toLine() const
- QLineF QLineF::unitVector() const
- 技巧
- 写在后面
- 系列博文
摘要
1.本文测试验证了QT5中的QLineF浮点直线类的各成员函数和属性
2.本文适用于学习QT的新手入门及练习,老手请绕路。
3.工程上传至优快云,供同一时期学习QT的网友参考,可自行查看。
4.转载请注明出处
基本信息
时间:2024.09.11
QT版本:5.14.2
平台:window 10
程序简介:
-
本工程是Qt基础类和基本数据类型专题例程,QLineF浮点直线类
-
本工程对照着Qt的帮助文档,把每个属性和成员函数测试了一遍
成员函数
程序全貌
这个练习程序,是对照着QT中QLine的帮助文档,一个一个测试形成的。
与QLine直线类相同的成员函数、比较简单的成员函数,看一眼上去知道怎么用,没有进行测试,只针对仅在QLineF类中包含的成员函数进行了测试。
可流化的2个函数没有进行测试。
本文链接地址 Qt基础类04-浮点直线类QLineF ,转载请注明出处。
QLineF浮点直线类与QLine直线类,有一些函数的功能是一样的,只是QLine是整形的,而QLineF是浮点类型的。但也有一些重要的区别,比如,QLineF提供了如Angle()求与x正半轴的夹角,AngleTo()求两直线的夹角,intersect()求两直线交点等等。详见下文。
本测试程序全貌如下图:
qreal QLineF::angle() const
作用:获取某直线与X轴正半周的夹角
void DrawAngle::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QLineF qline_right(600,250,700,250);
QLineF qline_up(600,250,600,150);
QLineF qline_left(600,250,500,250);
QLineF qline_down(600,250,600,350);
painter.setPen(Qt::red);
painter.drawLine(qline_right);
painter.setPen(Qt::green);
painter.drawLine(qline_up);
painter.setPen(Qt::blue);
painter.drawLine(qline_left);
painter.setPen(Qt::yellow);
painter.drawLine(qline_down);
label1->setText(tr("qline_right的起点坐标是:%1,%2,终点坐标是:%3,%4").arg(qline_right.x1()).arg(qline_right.y1()).arg(qline_right.x2()).arg(qline_right.y2()));
label2->setText(tr("qline_up的起点坐标是:%1,%2,终点坐标是:%3,%4").arg(qline_up.x1()).arg(qline_up.y1()).arg(qline_up.x2()).arg(qline_up.y2()));
label3->setText(tr("qline_left的起点坐标是:%1,%2,终点坐标是:%3,%4").arg(qline_left.x1()).arg(qline_left.y1()).arg(qline_left.x2()).arg(qline_left.y2()));
label4->setText(tr("qline_down的起点坐标是:%1,%2,终点坐标是:%3,%4").arg(qline_down.x1()).arg(qline_down.y1()).arg(qline_down.x2()).arg(qline_down.y2()));
qreal result1=0.0,result2=0.0,result3=0.0,result4=0.0;
result1=qline_right.angle();
result2=qline_up.angle();
result3=qline_left.angle();
result4=qline_down.angle();
label5->setText(tr("qline_right与x轴正向的夹角是:%1").arg(result1));
label6->setText(tr("qline_up与x轴正向的夹角是:%1").arg(result2));
label7->setText(tr("qline_left与x轴正向的夹角是:%1").arg(result3));
label8->setText(tr("qline_down与x轴正向的夹角是:%1").arg(result4));
}
程序运行效果如下:
qreal QLineF::angleTo(const QLineF &line) const
作用:获取2条直线的夹角
void DrawAngleTo::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QLineF qline1(650,250,750,250);
QLineF qline2(650,225,650,125);
QLineF qline3(500,250,550,200);
QLineF qline4(450,250,350,250);
painter.setPen(Qt::red);
painter.drawLine(qline1);
painter.setPen(Qt::red);
painter.drawLine(qline2);
painter.setPen(Qt::blue);
painter.drawLine(qline3);
painter.setPen(Qt::blue);
painter.drawLine(qline4);
label1->setText(tr("qline1的起点坐标是:%1,%2,终点坐标是:%3,%4").arg(qline1.x1()).arg(qline1.y1()).arg(qline1.x2()).arg(qline1.y2()));
label2->setText(tr("qline2的起点坐标是:%1,%2,终点坐标是:%3,%4").arg(qline2.x1()).arg(qline2.y1()).arg(qline2.x2()).arg(qline2.y2()));
label3->setText(tr("qline3的起点坐标是:%1,%2,终点坐标是:%3,%4"