Qt基础类04-浮点直线类QLineF

摘要

1.本文测试验证了QT5中的QLineF浮点直线类的各成员函数和属性

2.本文适用于学习QT的新手入门及练习,老手请绕路。

3.工程上传至优快云,供同一时期学习QT的网友参考,可自行查看。

4.转载请注明出处

基本信息

时间:2024.09.11
QT版本:5.14.2
平台:window 10

程序简介:

  1. 本工程是Qt基础类和基本数据类型专题例程,QLineF浮点直线类

  2. 本工程对照着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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值