当前位置: 首页 > news >正文

「QT」几何数据类 之 QPointF 浮点型点类

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「QT」QT5程序设计
📚全部专栏
「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合
「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「PK」Parasolid函数说明
「Math」探秘数学世界

目录

    • QPointF类详解
      • 一、引言
      • 二、使用范围
      • 三、类的头文件
      • 四、类的构造介绍
      • 五、共有函数介绍
      • 六、Static函数介绍
      • 七、运算符重载
      • 八、详细代码举例

QPointF类详解

一、引言

QPointF是Qt框架中的一个重要类,它用于表示二维平面上的浮点数坐标点。与QPoint类不同,QPointF使用浮点数(通常是qreal类型,在Qt中通常定义为doublefloat)来存储坐标,从而提供了更高的精度。这使得QPointF在处理需要高精度的图形变换和绘制时非常有用。
官方帮助文档:https://doc.qt.io/qt-5/qpointf.html

二、使用范围

QPointF类广泛应用于Qt的图形编程和界面设计中,特别是在需要高精度坐标计算的场景中。它不仅可以用于表示图形界面中的点位置,还可以作为向量进行各种数学运算。此外,QPointF类还常用于处理图形变换、动画效果以及精确绘制图形等场景。

三、类的头文件

要使用QPointF类,需要包含其头文件<QPointF>。这个头文件定义了QPointF类的所有成员和函数,使得开发者可以在自己的Qt应用程序中使用该类。

#include <QPointF>

四、类的构造介绍

QPointF类提供了两种构造函数:

  1. 默认构造函数:创建一个横纵坐标均为0.0的QPointF对象。
QPointF();
  1. 参数化构造函数:创建一个横纵坐标分别为指定浮点值的QPointF对象。
QPointF(qreal xpos, qreal ypos);

五、共有函数介绍

QPointF类提供了多个共有函数,用于获取和设置点的坐标、进行向量运算等。以下是一些常用的共有函数:

  • qreal x() const:获取点的横坐标。
  • qreal y() const:获取点的纵坐标。
  • void setX(qreal x):设置点的横坐标。
  • void setY(qreal y):设置点的纵坐标。
  • QPointF &operator+=(const QPointF &point):将当前点与另一个点相加,结果存储在当前点中。
  • QPointF &operator-=(const QPointF &point):将当前点与另一个点相减,结果存储在当前点中。
  • qreal manhattanLength() const:计算当前点作为向量时的曼哈顿长度(即横纵坐标绝对值之和)。
  • QPointF toPoint() const:将当前QPointF对象转换为QPoint对象,注意这会丢失精度。

六、Static函数介绍

QPointF类也提供了一个静态函数dotProduct,用于计算两个点的点积。

static qreal dotProduct(const QPointF &p1, const QPointF &p2);

该函数接受两个QPointF对象作为参数,并返回它们的点积结果。

七、运算符重载

QPointF类重载了多个运算符,使得该类可以像基本数据类型一样进行运算。以下是一些重载的运算符:

  • QPointF operator+(const QPointF &point):两个点相加,返回一个新的QPointF对象。
  • QPointF operator-(const QPointF &point):两个点相减,返回一个新的QPointF对象。
  • QPointF operator*(qreal factor):将点乘以一个浮点因子,返回一个新的QPointF对象。
  • QPointF operator/(qreal divisor):将点除以一个浮点因子,返回一个新的QPointF对象。
  • bool operator==(const QPointF &other):判断两个点是否相等(基于浮点数比较的容差)。
  • bool operator!=(const QPointF &other):判断两个点是否不相等。

需要注意的是,由于浮点数的精度问题,operator==operator!=的比较可能会受到一定的容差影响。在实际应用中,可能需要使用特定的比较函数或方法来处理浮点数比较的问题。

八、详细代码举例

以下是一个使用QPointF类的详细代码示例,展示了如何创建QPointF对象、获取和设置坐标、进行向量运算以及计算曼哈顿长度。

#include <QCoreApplication>
#include <QPointF>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 创建两个QPointF对象QPointF point1(3.5, 4.2);QPointF point2(1.1, 2.3);// 获取点的坐标qreal x1 = point1.x();qreal y1 = point1.y();qDebug() << "Point1:" << x1 << "," << y1;qreal x2 = point2.x();qreal y2 = point2.y();qDebug() << "Point2:" << x2 << "," << y2;// 设置点的坐标point1.setX(5.7);point1.setY(6.8);qDebug() << "After setting, Point1:" << point1.x() << "," << point1.y();// 向量运算QPointF point3 = point1 + point2;qDebug() << "Point1 + Point2 = Point3:" << point3.x() << "," << point3.y();QPointF point4 = point1 - point2;qDebug() << "Point1 - Point2 = Point4:" << point4.x() << "," << point4.y();QPointF point5 = point1 * 2.0;qDebug() << "Point1 * 2.0 = Point5:" << point5.x() << "," << point5.y();QPointF point6 = point1 / 1.5;qDebug() << "Point1 / 1.5 = Point6:" << point6.x() << "," << point6.y();// 计算曼哈顿长度qreal length = point1.manhattanLength();qDebug() << "Manhattan length of Point1:" << length;// 点积运算qreal dotProd = QPointF::dotProduct(point1, point2);qDebug() << "Dot product of Point1 and Point2:" << dotProd;return a.exec();
}

在这个示例中,我们首先创建了两个QPointF对象point1point2,并获取了它们的坐标。然后,我们设置了point1的新坐标,并进行了向量加法、减法、乘法和除法运算。此外,我们还计算了point1的曼哈顿长度和point1point2的点积,并将所有结果输出到控制台。

通过本文的介绍,相信读者已经对Qt中的QPointF类有了深入的了解。在实际开发中,可以根据需要灵活运用QPointF类来处理二维平面上的浮点数坐标点和向量运算。


在这里插入图片描述

相关文章:

「QT」几何数据类 之 QPointF 浮点型点类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…...

可能是全网第一个MySQL Workbench插件编写技巧

引言 应公司要求&#xff0c;数据库的敏感数据在写入到数据库中要进行加密&#xff0c;但是在测试环境查询数据的时候要手动解密&#xff0c;很不方便&#xff0c;有的时候数据比较多&#xff0c;解密比较麻烦。遂研究了一下如何通过 MySQL Workbench 的插件来实现查询数据一键…...

D62【python 接口自动化学习】- python基础之数据库

day62 SQL 基础 学习日期&#xff1a;20241108 学习目标&#xff1a;MySQL数据库-- 131 SQL基础和DDL 学习笔记&#xff1a; SQL的概述 SQL语言的分类 SQL的语法特征 DDL - 库管理 DDL - 表管理 总结 SQL是结构化查询语言&#xff0c;用于操作数据库&#xff0c;通用于绝大…...

探索美赛:从准备到挑战的详细指南

前言 美国大学生数学建模竞赛&#xff08;MCM/ICM&#xff09;&#xff0c;简称“美赛”&#xff0c;是全球规模最大的数学建模竞赛之一。它鼓励参赛者通过数学建模来解决现实世界中的复杂问题&#xff0c;广受世界各地大学生的欢迎。本文将详细介绍美赛的全过程&#xff0c;从…...

IP地址查询——IP归属地离线库

自从网络监管部门将现实IP地址列入监管条例&#xff0c;IP地址的离线库变成网络企业发展业务的不可或缺的一部分&#xff0c;那么IP地址离线库是什么&#xff0c;又能够给我们带来什么呢&#xff1f; 什么是IP地址离线库&#xff1f; IP地址离线库是IP地址服务商将通过各种合…...

“倒时差”用英语怎么说?生活英语口语学习柯桥外语培训

“倒时差”用英语怎么说&#xff1f; “倒时差”&#xff0c;这个让无数旅人闻之色变的词汇&#xff0c;在英语中对应的正是“Jet Lag”。"Jet" 指的是喷气式飞机&#xff0c;而 "lag" 指的是落后或延迟。这个短语形象地描述了当人们乘坐喷气式飞机快速穿…...

Linux入门攻坚——37、Linux防火墙-iptables-3

私网地址访问公网地址的问题&#xff0c;请求时&#xff0c;目标地址是公网地址&#xff0c;可以在公网路由器中进行路由&#xff0c;但是响应报文的目的地址是私网地址&#xff0c;此时在公网路由器上就会出现问题。公网地址访问私网地址的问题&#xff0c;需要先访问一个公网…...

微服务架构面试内容整理-安全性-Spring Security

Spring Security 是 Spring 框架中用于实现认证和授权的安全模块,它提供了全面的安全解决方案,可以帮助开发者保护 Web 应用、微服务和 API 免受常见的安全攻击。以下是 Spring Security 的主要特点、工作原理和使用场景: 主要特点 1. 身份认证与授权: 提供多种认证方式,…...

新的服务器Centos7.6 安装基础的环境配置(新服务器可直接粘贴使用配置)

常见的基础服务器配置之Centos命令 正常来说都是安装一个docker基本上很多问题都可以解决了&#xff0c;我基本上都是通过docker去管理一些容器如&#xff1a;mysql、redis、mongoDB等之类的镜像&#xff0c;还有一些中间件如kafka。下面就安装一个 docker 和 nginx 的相关配置…...

深度学习:广播机制

广播机制&#xff08;Broadcasting&#xff09;是 PyTorch&#xff08;以及其他深度学习框架如 NumPy&#xff09;中的一种强大功能&#xff0c;它允许不同形状的张量进行逐元素操作&#xff0c;而不需要显式地扩展张量的维度。广播机制通过自动扩展较小的张量来匹配较大张量的…...

音视频入门基础:FLV专题(25)——通过FFprobe显示FLV文件每个packet的信息

音视频入门基础&#xff1a;FLV专题系列文章&#xff1a; 音视频入门基础&#xff1a;FLV专题&#xff08;1&#xff09;——FLV官方文档下载 音视频入门基础&#xff1a;FLV专题&#xff08;2&#xff09;——使用FFmpeg命令生成flv文件 音视频入门基础&#xff1a;FLV专题…...

Openstack7--安装消息队列服务RabbitMQ

只需要在控制节点安装 安装RabbitMQ yum -y install rabbitmq-server 启动RabbitMQ并设置开机自启 systemctl start rabbitmq-server;systemctl enable rabbitmq-server 创建 rabbitmq 用户 并设置密码为 000000 rabbitmqctl add_user rabbitmq 000000 如果你不慎创错了…...

day55 图论章节刷题Part07([53.寻宝]prim算法、kruskal算法)

前言&#xff1a;使用最小生成树的方法解决将所有节点连接起来所需的最小路径问题。 prim算法 Prim算法是一种贪心算法&#xff0c;从任意一个顶点开始构建最小生成树。每次选择当前已加入生成树的顶点中&#xff0c;距离最近的尚未加入生成树的顶点&#xff0c;直到所有顶点…...

LeetCode 93-复制 IP地址

题目链接&#xff1a;LeetCode93 欢迎留言交流&#xff0c;每天都会回消息。 class Solution {//定义结果集&#xff0c;返回最终结果List<String> rs new ArrayList<>();public List<String> restoreIpAddresses(String s) {//将字符串包装为可变长度的字…...

海底捞点单

单点锅底推荐&#xff1a; 番茄锅底通31 牛油麻辣通44 清汤麻辣备44 菌汤锅底通31 小吃&主食&#xff1a; 捞派捞面一黄金小馒头一茴香小油条 红糖枇杷一小酥肉 DIY锅底推荐&#xff1a; 1.寿喜锅&#xff1a;海鲜味酱4勺陈醋1勺蚝油2勺盐适量白糖7勺 芹菜1勺 2.麻辣锅底…...

It’s All About Your Sketch: Democratising Sketch Control in Diffusion Models

翻译&#xff1a; 摘要 本文揭示了草图在扩散模型中的潜力&#xff0c;解决了生成式人工智能中直接草图控制的虚假承诺。我们重要的是使这个过程更加普及&#xff0c;让业余的草图也能生成精确的图像&#xff0c;真正实现“你画的就是你得到的”。一项初步研究强调了这一研究的…...

Java基础-组件及事件处理(下)

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 面板组件 说明 常见组件 JScrollPane常用构造方法 JScrollPane设置面板滚动策略的方法 JScrollPane滚…...

npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)

您提供的命令 npm list -g --depth0 是在 Node Package Manager (npm) 的上下文中使用的&#xff0c;用来列出全局安装的所有 npm 软件包而不显示它们的依赖项。 这是它的运作方式&#xff1a; npm list -g --depth0-g: 指定列表应包括全局安装的软件包。--depth0: 限制树形结…...

深度学习:nn.Linear

nn.Linear 是 PyTorch 中的一个线性层&#xff08;全连接层&#xff09;&#xff0c;用于将输入张量从一个维度空间映射到另一个维度空间。具体来说&#xff0c;nn.Linear 执行以下操作&#xff1a; outputinputweightTbias 其中&#xff1a; input 是输入张量。 weight 是权重…...

大数据新视界 -- 大数据大厂之 Impala 性能提升:高级执行计划优化实战案例(下)(18/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...