「QT」几何数据类 之 QSizeF 浮点型尺寸类

| ✨博客主页 | ||
|---|---|---|
| 何曾参静谧的博客 | ||
| 📌文章专栏 | ||
| 「QT」QT5程序设计 | ||
| 📚全部专栏 | ||
| 「VS」Visual Studio | 「C/C++」C/C++程序设计 | 「UG/NX」BlockUI集合 |
| 「Win」Windows程序设计 | 「DSA」数据结构与算法 | 「UG/NX」NX二次开发 |
| 「QT」QT5程序设计 | 「File」数据文件格式 | 「PK」Parasolid函数说明 |
| 「Py」Python程序设计 | 「Math」探秘数学世界 | |
目录
- Qt中QSizeF类详解(基于Qt 5.15版本)
- 一、类的引言
- 二、使用范围
- 三、类的头文件
- 四、类的继承
- 五、类的构造介绍
- 六、共有函数介绍
- 七、static函数介绍
- 八、运算符重载
- 九、详细代码举例
Qt中QSizeF类详解(基于Qt 5.15版本)
一、类的引言
QSizeF类是Qt框架中用于表示二维对象浮点大小的重要类。与QSize类不同,QSizeF使用浮点数(通常是qreal类型,在Qt中通常定义为double)来表示宽度和高度,从而提供了更高的精度。这在处理需要高精度的图形操作时尤为重要,如精确绘制、缩放和布局管理等。
官方文档:https://doc.qt.io/qt-5/qsizef.html
二、使用范围
QSizeF类主要用于以下场景:
- 在需要高精度尺寸计算的图形绘制中。
- 在处理缩放、旋转等图形变换时。
- 在布局管理器中指定控件的浮点大小。
- 在进行尺寸比较、缩放、交换等操作时,需要更高的精度。
三、类的头文件
在Qt 5.15版本中,QSizeF类的头文件是<QSizeF>,通常通过包含<QtCore/QSizeF>来引用。在使用QSizeF类之前,需要确保在项目的.pro文件中添加了QT += core配置,以包含QtCore模块。
四、类的继承
与QSize类一样,QSizeF类也是一个独立的类,不继承自其他类。它实现了对二维对象浮点大小的表示和操作功能,是Qt几何数据类体系中的一个重要组成部分。
五、类的构造介绍
QSizeF类提供了两个构造函数:
QSizeF():构造一个默认的QSizeF对象,其宽度和高度均被设置为0.0。QSizeF(qreal width, qreal height):构造一个宽度为width、高度为height的QSizeF对象。
何曾参静谧的博客
六、共有函数介绍
QSizeF类提供了以下共有成员函数:
qreal width() const:返回QSizeF对象的宽度。qreal height() const:返回QSizeF对象的高度。void setWidth(qreal width):设置QSizeF对象的宽度。void setHeight(qreal height):设置QSizeF对象的高度。bool isEmpty() const:如果宽度和高度中的任何一个小于或等于0.0(考虑到浮点数精度问题,通常不会严格等于0.0,而是接近0.0的一个极小值),则返回true;否则返回false。但请注意,由于浮点数的特性,判断一个浮点数是否等于0.0通常是不安全的,因此isEmpty()的实际用途可能有限。bool isValid() const:如果宽度和高度都是有效的(即大于0.0,考虑到浮点数精度,这里通常意味着不是负数或极小的值),则返回true;否则返回false。QSizeF boundedTo(const QSizeF &other) const:返回一个包含此尺寸和给定other尺寸的最小宽度和高度的尺寸。QSizeF expandedTo(const QSizeF &other) const:返回一个包含此尺寸和给定other尺寸的最大宽度和高度的尺寸。QSizeF scaled(qreal w, qreal h, Qt::AspectRatioMode mode) const:根据指定的模式mode,将大小缩放为具有给定宽度w和高度h的矩形。QSizeF scaled(const QSizeF &s, Qt::AspectRatioMode mode) const:与上一个函数类似,但使用另一个QSizeF对象s作为缩放目标。void transpose():交换宽度和高度值。注意,这个函数会修改当前对象。QSizeF transposed() const:返回交换宽度和高度后的新QSizeF对象,不改变当前对象。
七、static函数介绍
在Qt 5.15版本中,QSizeF类没有提供static成员函数。但Qt框架中的其他类可能会提供与QSizeF相关的static函数,用于执行特定的几何计算或转换。
八、运算符重载
QSizeF类支持以下运算符重载,使得尺寸的操作更加直观和方便:
QSizeF &operator+=(const QSizeF &s):将当前QSizeF对象与另一个QSizeF对象s相加,结果存储在当前对象中。QSizeF &operator-=(const QSizeF &s):将当前QSizeF对象与另一个QSizeF对象s相减,结果存储在当前对象中。QSizeF &operator*=(qreal c):将当前QSizeF对象乘以一个浮点数c,结果存储在当前对象中。QSizeF &operator/=(qreal c):将当前QSizeF对象除以一个浮点数c,结果存储在当前对象中。bool operator==(const QSizeF &s1, const QSizeF &s2):比较两个QSizeF对象是否相等,考虑到浮点数精度问题,通常会有一个极小的误差范围。bool operator!=(const QSizeF &s1, const QSizeF &s2):比较两个QSizeF对象是否不相等。
此外,QSizeF类还支持与QPointF类相似的操作符重载,如+、-、*和/等,用于执行尺寸与点的加减、缩放等操作。但请注意,这些操作的结果通常是另一个QSizeF或QPointF对象,而不是直接修改当前对象(除非使用了*=、/=等赋值运算符)。
何曾参静谧的博客
九、详细代码举例
以下是一个使用QSizeF类的详细代码示例:
#include <QCoreApplication>
#include <QSizeF>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 构造一个QSizeF对象QSizeF size1(100.5, 200.75);qDebug() << "Size1: width=" << size1.width() << ", height=" << size1.height();// 设置新的宽度和高度size1.setWidth(150.25);size1.setHeight(300.5);qDebug() << "Updated Size1: width=" << size1.width() << ", height=" << size1.height();// 构造另一个QSizeF对象QSizeF size2(250.0, 150.75);// 使用boundedTo函数获取最小尺寸QSizeF minSize = size1.boundedTo(size2);qDebug() << "Bounded Size: width=" << minSize.width() << ", height=" << minSize.height();// 使用expandedTo函数获取最大尺寸QSizeF maxSize = size1.expandedTo(size2);qDebug() << "Expanded Size: width=" << maxSize.width() << ", height=" << maxSize.height();// 使用scaled函数进行缩放,保持宽高比QSizeF scaledSize = size1.scaled(50.0, 50.0, Qt::KeepAspectRatio);qDebug() << "Scaled Size: width=" << scaledSize.width() << ", height=" << scaledSize.height();// 交换宽度和高度QSizeF transposedSize = size1.transposed();qDebug() << "Transposed Size: width=" << transposedSize.width() << ", height=" << transposedSize.height();// 直接修改对象(使用赋值运算符)size1 *= 0.5; // 缩放为原来的一半qDebug() << "Halved Size1: width=" << size1.width() << ", height=" << size1.height();return a.exec();
}
在这个示例中,我们创建了两个QSizeF对象size1和size2,并使用了width()、height()、setWidth()、setHeight()、boundedTo()、expandedTo()、scaled()和transposed()等成员函数来操作它们。此外,我们还展示了如何使用赋值运算符*=来直接修改对象。最后,我们使用qDebug()函数输出了各个尺寸的值。
何曾参静谧的博客

相关文章:
「QT」几何数据类 之 QSizeF 浮点型尺寸类
✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…...
Essential Cell Biology--Fifth Edition--Chapter one(2)
1.1.1.3 Living Cells Are Self-Replicating Collections of Catalysts 催化剂集合 生物最常被引用的特性之一是它们的繁殖能力。对于细胞来说,这个过程包括复制它们的遗传物质和其他成分,然后分裂成两个,产生一对子细胞[daughter cells]&a…...
大语言模型LLMs在医学领域的最新进展总结
我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 相比其他学科,医学AI,是发表学术成果最多的领域。 医学数据的多样性和复杂性(包括文本、图像、基因组数据等),使得…...
云防护单节点2T抗攻击能力意味着什么?
随着互联网的发展,DDoS攻击的规模和频率不断增加,对企业和个人用户的网络服务造成了严重威胁。云防护服务作为一种高效的DDoS防护手段,逐渐成为许多企业的首选。本文将重点讨论云防护单节点2T(太比特每秒)抗攻击能力的…...
IDEA在编译时: java: 找不到符号符号: 变量 log
一、问题 IDEA在编译的时候报Error:(30, 17) java: 找不到符号符号: 变量 log Error:(30, 17) java: 找不到符号 符号: 变量 log 位置: 类 com.mokerson.rabbitmq.config.RabbitMqConfig 二、解决方案 背景:下载其他同事代码时,第一次运行,…...
HTML 基础架构:理解网页的骨架
HTML的文档结构主要由以下几个部分组成:<html>、<head>和<body>。 <html>标签是HTML文档的根元素,用来包裹整个HTML文档的内容。<head>标签用于定义文档的头部,包含了一些元数据和其他不直接显示在页面上的内…...
FPGA学习笔记#5 Vitis HLS For循环的优化(1)
本笔记使用的Vitis HLS版本为2022.2,在windows11下运行,仿真part为xcku15p_CIV-ffva1156-2LV-e,主要根据教程:跟Xilinx SAE 学HLS系列视频讲座-高亚军进行学习 从这一篇开始正式进入HLS对C代码的优化笔记 目录 1.循环优化中的基…...
web实操4——servlet体系结构
servlet体系结构 我们基本都只实现service方法,其余几个都不用, 之前我们直接实现servlet接口,所有的方法都必须实现,不用也得写,不然报错,写了又不用当摆设。 能不能只要定义一个service方法就可以&…...
Linux开发讲课48--- Linux 文件系统概览
本文旨在高屋建瓴地来讨论 Linux 文件系统概念,而不是对某种特定的文件系统,比如 EXT4 是如何工作的进行具体的描述。另外,本文也不是一个文件系统命令的教程。 每台通用计算机都需要将各种数据存储在硬盘驱动器(HDD)…...
Node.js 模块详解
模块的概念 Node.js 运行在 V8 JavaScript 引擎上,通过 require() 函数导入相关模块来处理服务器端的各种进程。一个 Node.js 模块可以是一个函数库、类集合或其他可重用的代码,通常存储在一个或多个 .js 文件中。 例如,启动一个 Node.js 服…...
大厂面试真题-说说tomcat的优缺点
Tomcat作为服务器,特别是作为Java Web服务器,具有一系列优点和缺点。以下是对其优缺点的详细分析: 优点 开源免费: Tomcat是一个免费、开源的Web服务器,用户可以在任何环境下自由使用,无需支付任何费用。…...
Linux系统编译boot后发现编译时间与Windows系统不一致的解决方案
现象 如下图,从filezilla软件看虚拟机Linux中编译的uboot.img修改时间与Windows系统时间不同 解决过程 在Linux中查看编译的uboot详细信息,从而得到编译时间。终端输入ls -l后,如下图: 结论 说明在Linux是按照Windows系统时…...
WPS Office手机去广高级版
工具介绍功能特点 WPS Office是使用人数最多的移动办公软件,独有手机阅读模式,字体清晰翻页流畅;完美支持文字,表格,演示,PDF等51种文档格式;新版本具有海量精美模版及高级功能 安装环境 [名称…...
Python爬虫基础-正则表达式!
前言 正则表达式是对字符串的一种逻辑公式,用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则的字符串”,此字符串用来表示对字符串的一种“过滤”逻辑。正在在很多开发语言中都存在,而非python独有。对其知识点…...
Python处理PDF组件使用及注意事项
在 Python 中处理 PDF 文件时, 使用的组件及注意事项如下: 1. PyPDF2 / PyPDF4 说明: PyPDF2 和 PyPDF4 都是功能强大的 PDF 操作库,适用于合并、拆分、旋转 PDF 文件,提取 PDF 元数据等。PyPDF4 是 PyPDF2 的一个分…...
langgraph_plan_and_execute
整体入门demo 教程概览 欢迎来到LangGraph教程! 这些笔记本通过构建各种语言代理和应用程序,介绍了如何使用LangGraph。 快速入门(Quick Start) 快速入门部分通过一个全面的入门教程,帮助您从零开始构建一个代理&a…...
[代码随想录打卡Day8] 344.反转字符串 541. 反转字符串II 54. 替换数字
反转字符串 难度:易。 问题描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 这个就是开头…...
DCN DCWS-6028神州数码 AC 设备配置笔记
DCN DCWS-6028神州数码 AC 设备配置笔记 一、前期准备 PC 电脑网络配置 目的:使 PC 能够访问 AC 的 web 管理控制台。配置详情:web 管理控制台地址为 192.168.1.10,将 PC 电脑 IP 地址配置在 192.168.1.1 - 192.168.1.254 网段内,如 192.168.1.110,子网掩码 255.255.255.…...
Go语言的常用内置函数
文章目录 一、Strings包字符串处理包定义Strings包的基本用法Strconv包中常用函数 二、Time包三、Math包math包概述使用math包 四、随机数包(rand) 一、Strings包 字符串处理包定义 Strings包简介: 一般编程语言包含的字符串处理库功能区别…...
华为OD技术一面手撕题
150. 逆波兰表达式求值 来自leecode 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数(运算对象)都…...
SAP FI年结总账余额结转(FAGLGVTR/F.16)详细注意事项
SAP FI年结总账余额结转(FAGLGVTR/F.16)详细注意事项一、执行前注意事项(核心前提,必查)1. 基础配置与账期检查(重中之重)账期管理:必须通过事务码OB52,确认旧年度1-12期…...
探索Beyond All Reason:重新定义开源实时战略游戏体验
探索Beyond All Reason:重新定义开源实时战略游戏体验 【免费下载链接】Beyond-All-Reason www.beyondallreason.info 项目地址: https://gitcode.com/gh_mirrors/be/Beyond-All-Reason Beyond All Reason是一款基于Spring引擎开发的开源实时战略(…...
Local Moondream2效果展示:真实用户上传图片的高质量描述输出
Local Moondream2效果展示:真实用户上传图片的高质量描述输出 1. 核心能力概览 Local Moondream2是一个基于Moondream2构建的超轻量级视觉对话Web界面,它让普通电脑也能拥有"视觉理解"能力。这个工具最大的特点是能够对用户上传的图片进行深…...
为什么你的脑影像分析总出错?聊聊AC-PC线标准化背后的原理与MIPAV实现
为什么你的脑影像分析总出错?AC-PC线标准化原理与MIPAV实战解析 在神经影像研究的实验室里,最常听到的抱怨莫过于"同样的分析方法,这次的结果怎么完全对不上?"。就像用不同比例尺的地图导航会迷路一样,忽略A…...
从PLC到Kubernetes:工业Python网关高可用配置的6层安全加固体系(含CVE-2024-XXXX漏洞规避方案)
第一章:工业Python网关的演进逻辑与高可用本质工业现场设备协议繁杂、环境严苛、响应实时性要求高,传统嵌入式网关受限于固件封闭、扩展能力弱和生态割裂,难以支撑现代智能制造对数据柔性接入与边缘智能协同的需求。Python凭借其丰富的工业协…...
传世无双光武系统全解析:蓝紫橙红金星位进阶,特效酷炫战力飙升新高度!
在传奇类手游百花齐放的今天,《金装裁决之传世无双》凭借官方正版授权的品质保障、每周稳定开新区的公平生态,以及不断创新的玩法体系,成为无数玩家心中的热血首选。而即将于2026 年 3 月 30 日 10:00震撼开启的【无双 1371 区】,…...
5大实战技巧让你精通FDS火灾动力学模拟技术
5大实战技巧让你精通FDS火灾动力学模拟技术 【免费下载链接】fds Fire Dynamics Simulator 项目地址: https://gitcode.com/gh_mirrors/fd/fds 当一场突如其来的火灾发生时,传统的消防设计往往只能依靠经验估算,而FDS(Fire Dynamics S…...
SDMatte与版本控制:使用Git管理模型权重、训练脚本与实验数据
SDMatte与版本控制:使用Git管理模型权重、训练脚本与实验数据 1. 为什么机器学习项目需要版本控制 在SDMatte这类图像处理模型的开发过程中,我们经常遇到这样的困扰:上周训练的那个效果最好的模型权重文件找不到了;修改了训练脚…...
vLLM-v0.17.1效果展示:vLLM在中文长文本摘要任务中的准确率实测
vLLM-v0.17.1效果展示:vLLM在中文长文本摘要任务中的准确率实测 1. vLLM框架简介 vLLM是一个专注于提升大语言模型推理效率的开源库,它的核心目标是让开发者能够更轻松地部署和使用各类大模型。这个项目最初由加州大学伯克利分校的研究团队发起&#x…...
内存暴涨却查无踪迹?Python对象生命周期管理的7个致命盲区,现在不看明天宕机!
第一章:Python智能体内存管理的核心原理Python智能体(如基于LangChain、LlamaIndex构建的Agent)在运行过程中并非仅依赖语言模型推理,其内存管理机制直接决定状态持久性、上下文感知能力与多轮交互一致性。核心在于Python对象生命…...
