「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中通常定义为double或float)来存储坐标,从而提供了更高的精度。这使得QPointF在处理需要高精度的图形变换和绘制时非常有用。
官方帮助文档:https://doc.qt.io/qt-5/qpointf.html
二、使用范围
QPointF类广泛应用于Qt的图形编程和界面设计中,特别是在需要高精度坐标计算的场景中。它不仅可以用于表示图形界面中的点位置,还可以作为向量进行各种数学运算。此外,QPointF类还常用于处理图形变换、动画效果以及精确绘制图形等场景。
三、类的头文件
要使用QPointF类,需要包含其头文件<QPointF>。这个头文件定义了QPointF类的所有成员和函数,使得开发者可以在自己的Qt应用程序中使用该类。
#include <QPointF>
四、类的构造介绍
QPointF类提供了两种构造函数:
- 默认构造函数:创建一个横纵坐标均为0.0的QPointF对象。
QPointF();
- 参数化构造函数:创建一个横纵坐标分别为指定浮点值的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对象point1和point2,并获取了它们的坐标。然后,我们设置了point1的新坐标,并进行了向量加法、减法、乘法和除法运算。此外,我们还计算了point1的曼哈顿长度和point1与point2的点积,并将所有结果输出到控制台。
通过本文的介绍,相信读者已经对Qt中的QPointF类有了深入的了解。在实际开发中,可以根据需要灵活运用QPointF类来处理二维平面上的浮点数坐标点和向量运算。

相关文章:
「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…...
可能是全网第一个MySQL Workbench插件编写技巧
引言 应公司要求,数据库的敏感数据在写入到数据库中要进行加密,但是在测试环境查询数据的时候要手动解密,很不方便,有的时候数据比较多,解密比较麻烦。遂研究了一下如何通过 MySQL Workbench 的插件来实现查询数据一键…...
D62【python 接口自动化学习】- python基础之数据库
day62 SQL 基础 学习日期:20241108 学习目标:MySQL数据库-- 131 SQL基础和DDL 学习笔记: SQL的概述 SQL语言的分类 SQL的语法特征 DDL - 库管理 DDL - 表管理 总结 SQL是结构化查询语言,用于操作数据库,通用于绝大…...
探索美赛:从准备到挑战的详细指南
前言 美国大学生数学建模竞赛(MCM/ICM),简称“美赛”,是全球规模最大的数学建模竞赛之一。它鼓励参赛者通过数学建模来解决现实世界中的复杂问题,广受世界各地大学生的欢迎。本文将详细介绍美赛的全过程,从…...
IP地址查询——IP归属地离线库
自从网络监管部门将现实IP地址列入监管条例,IP地址的离线库变成网络企业发展业务的不可或缺的一部分,那么IP地址离线库是什么,又能够给我们带来什么呢? 什么是IP地址离线库? IP地址离线库是IP地址服务商将通过各种合…...
“倒时差”用英语怎么说?生活英语口语学习柯桥外语培训
“倒时差”用英语怎么说? “倒时差”,这个让无数旅人闻之色变的词汇,在英语中对应的正是“Jet Lag”。"Jet" 指的是喷气式飞机,而 "lag" 指的是落后或延迟。这个短语形象地描述了当人们乘坐喷气式飞机快速穿…...
Linux入门攻坚——37、Linux防火墙-iptables-3
私网地址访问公网地址的问题,请求时,目标地址是公网地址,可以在公网路由器中进行路由,但是响应报文的目的地址是私网地址,此时在公网路由器上就会出现问题。公网地址访问私网地址的问题,需要先访问一个公网…...
微服务架构面试内容整理-安全性-Spring Security
Spring Security 是 Spring 框架中用于实现认证和授权的安全模块,它提供了全面的安全解决方案,可以帮助开发者保护 Web 应用、微服务和 API 免受常见的安全攻击。以下是 Spring Security 的主要特点、工作原理和使用场景: 主要特点 1. 身份认证与授权: 提供多种认证方式,…...
新的服务器Centos7.6 安装基础的环境配置(新服务器可直接粘贴使用配置)
常见的基础服务器配置之Centos命令 正常来说都是安装一个docker基本上很多问题都可以解决了,我基本上都是通过docker去管理一些容器如:mysql、redis、mongoDB等之类的镜像,还有一些中间件如kafka。下面就安装一个 docker 和 nginx 的相关配置…...
深度学习:广播机制
广播机制(Broadcasting)是 PyTorch(以及其他深度学习框架如 NumPy)中的一种强大功能,它允许不同形状的张量进行逐元素操作,而不需要显式地扩展张量的维度。广播机制通过自动扩展较小的张量来匹配较大张量的…...
音视频入门基础:FLV专题(25)——通过FFprobe显示FLV文件每个packet的信息
音视频入门基础:FLV专题系列文章: 音视频入门基础:FLV专题(1)——FLV官方文档下载 音视频入门基础:FLV专题(2)——使用FFmpeg命令生成flv文件 音视频入门基础: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算法)
前言:使用最小生成树的方法解决将所有节点连接起来所需的最小路径问题。 prim算法 Prim算法是一种贪心算法,从任意一个顶点开始构建最小生成树。每次选择当前已加入生成树的顶点中,距离最近的尚未加入生成树的顶点,直到所有顶点…...
LeetCode 93-复制 IP地址
题目链接:LeetCode93 欢迎留言交流,每天都会回消息。 class Solution {//定义结果集,返回最终结果List<String> rs new ArrayList<>();public List<String> restoreIpAddresses(String s) {//将字符串包装为可变长度的字…...
海底捞点单
单点锅底推荐: 番茄锅底通31 牛油麻辣通44 清汤麻辣备44 菌汤锅底通31 小吃&主食: 捞派捞面一黄金小馒头一茴香小油条 红糖枇杷一小酥肉 DIY锅底推荐: 1.寿喜锅:海鲜味酱4勺陈醋1勺蚝油2勺盐适量白糖7勺 芹菜1勺 2.麻辣锅底…...
It’s All About Your Sketch: Democratising Sketch Control in Diffusion Models
翻译: 摘要 本文揭示了草图在扩散模型中的潜力,解决了生成式人工智能中直接草图控制的虚假承诺。我们重要的是使这个过程更加普及,让业余的草图也能生成精确的图像,真正实现“你画的就是你得到的”。一项初步研究强调了这一研究的…...
Java基础-组件及事件处理(下)
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 面板组件 说明 常见组件 JScrollPane常用构造方法 JScrollPane设置面板滚动策略的方法 JScrollPane滚…...
npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)
您提供的命令 npm list -g --depth0 是在 Node Package Manager (npm) 的上下文中使用的,用来列出全局安装的所有 npm 软件包而不显示它们的依赖项。 这是它的运作方式: npm list -g --depth0-g: 指定列表应包括全局安装的软件包。--depth0: 限制树形结…...
深度学习:nn.Linear
nn.Linear 是 PyTorch 中的一个线性层(全连接层),用于将输入张量从一个维度空间映射到另一个维度空间。具体来说,nn.Linear 执行以下操作: outputinputweightTbias 其中: input 是输入张量。 weight 是权重…...
大数据新视界 -- 大数据大厂之 Impala 性能提升:高级执行计划优化实战案例(下)(18/30)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
102. 在控制平面主机名更改后恢复 Rancher 配置的 RKE2 集群
Environment 环境 Rancher provisioned RKE2 downstream cluster control plane node hostname changed, without removing the node from the cluster. Rancher 配置了 RKE2 下游集群控制平面节点的主机名更改,但未将该节点从集群中移除。 Procedure 程序It is …...
3层防护构建个人AI助手: Maid跨平台应用的隐私与体验革新
3层防护构建个人AI助手: Maid跨平台应用的隐私与体验革新 【免费下载链接】maid Maid is a free and open source application for interfacing with llama.cpp models locally, and with Anthropic, DeepSeek, Ollama, Mistral and OpenAI models remotely. 项目…...
请解释 Linux 系统中的内核模块管理,并描述如何加载和卸载模块。
在 Linux 系统中,内核模块(Kernel Modules) 是可以在不重新编译或重启内核的情况下,动态添加到运行中内核的代码片段。它们通常用于支持新的硬件设备、文件系统或网络协议。 这种机制使得 Linux 内核保持精简(核心功能…...
FastAPI + SQLite:从基础CRUD到安全并发的实战指南
核心摘要本文将带你超越FastAPI SQLite的基础CRUD搭建,聚焦于安全防护(认证、授权、输入验证)与并发处理(数据库连接池、异步优化)两大实战痛点。你会获得一套可直接复用的项目骨架,并理解其背后的设计逻辑…...
聚点智行:WorkBuddy 辅助开发 AI 地图智能应用实战
一、从痛点到创意:一个真实场景的启发 作为一名经常组织朋友聚会的"社交达人",我遇到了一个看似简单却让人头疼的问题:每次约饭,大家都在问"在哪见?" 张三住在回龙观,李四在东直门&…...
2026年硕士论文降AIGC率必备工具:4款实测效果对比
试了四五款工具,最后留下来的就这几个。先说结论:降AIGC率这个需求,嘎嘎降AI(www.aigcleaner.com)是目前性价比最高的选择,4.8元/千字,达标率99.26%。 如果对价格不敏感、对知网特别严格&#…...
如何3步掌握Home Assistant SSH Web终端:从零到精通的管理指南 ✨
如何3步掌握Home Assistant SSH Web终端:从零到精通的管理指南 ✨ 【免费下载链接】app-ssh Advanced SSH & Web Terminal - Home Assistant Community Apps 项目地址: https://gitcode.com/gh_mirrors/ad/app-ssh 在智能家居系统的日常维护中࿰…...
代码重构的艺术:在业务狂奔中如何优雅地还技术债
业务压力下的质量困局在快节奏的软件开发世界中,业务需求如同永不停歇的浪潮,推动着团队高速前行。为了抢占市场先机、快速响应变化,“先上线,再优化”几乎成了许多项目的默认模式。然而,这种模式背后,是以…...
Qwen-Ranker Pro快速部署:Windows WSL2环境下Streamlit兼容性方案
Qwen-Ranker Pro快速部署:Windows WSL2环境下Streamlit兼容性方案 1. 环境准备与系统要求 在Windows WSL2环境中部署Qwen-Ranker Pro需要确保系统满足以下基本要求: 硬件要求: 内存:至少8GB RAM(推荐16GB以上&…...
TouchGal:3个关键功能让你成为真正的Galgame收藏家
TouchGal:3个关键功能让你成为真正的Galgame收藏家 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 你是否曾为寻找心仪的…...
