「QT」几何数据类 之 QRectF 浮点型矩形类

news2024/11/25 14:49:41

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「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中的QRectF类
      • 一、类的引言
      • 二、使用范围
      • 三、类的头文件
      • 四、类的构造介绍
      • 五、共有函数介绍
      • 六、Static函数介绍
      • 七、运算符重载
      • 八、详细代码举例

Qt中的QRectF类

一、类的引言

QRectF是Qt框架中用于描述浮点型矩形的类,它提供了多种构造函数和方法来设置和操作矩形。与QRect类不同,QRectF使用浮点数来表示矩形的坐标和尺寸,这使得它在进行精确绘图和几何计算时更为灵活和准确。QRectF类在Qt的图形视图框架、绘图、碰撞检测及图像处理等多个方面发挥着重要作用。
https://doc.qt.io/qt-5/qrectf.html

二、使用范围

  1. 绘图:在Qt中绘制图形时,使用QRectF来确定图形的位置和大小,特别是在需要高精度绘图的情况下。
  2. 图形视图框架:Qt的图形视图框架使用QRectF来描述图形项的位置和边界。
  3. 碰撞检测:在游戏开发和图形应用中,使用QRectF来判断两个物体是否相交或重叠。
  4. 图像处理:在图像处理中,使用QRectF来确定图像的区域,进行裁剪、缩放等操作。

三、类的头文件

QRectF类的头文件是<QRectF>,在使用QRectF类时,需要包含这个头文件。

#include <QRectF>

四、类的构造介绍

QRectF类提供了多种构造函数,允许通过不同的参数来创建矩形对象:

  1. QRectF(): 创建一个空矩形。
  2. QRectF(qreal x, qreal y, qreal width, qreal height): 创建一个左上角坐标为(x, y),宽度为width,高度为height的矩形。
  3. QRectF(const QPointF &topLeft, const QPointF &bottomRight): 创建一个左上角坐标为topLeft,右下角坐标为bottomRight的矩形。
  4. QRectF(const QRectF &other): 创建一个与other相同的矩形。

五、共有函数介绍

QRectF类提供了丰富的成员函数来操作矩形对象:

  1. 设置和获取位置与大小

    • setX(qreal x): 设置矩形左上角的x坐标。
    • setY(qreal y): 设置矩形左上角的y坐标。
    • setWidth(qreal width): 设置矩形的宽度。
    • setHeight(qreal height): 设置矩形的高度。
    • topLeft(): 返回矩形的左上角坐标。
    • topRight(): 返回矩形的右上角坐标。
    • bottomLeft(): 返回矩形的左下角坐标。
    • bottomRight(): 返回矩形的右下角坐标。
    • width(): 返回矩形的宽度。
    • height(): 返回矩形的高度。
  2. 移动和缩放

    • moveLeft(qreal x): 将矩形的左边界移动到x。
    • moveTop(qreal y): 将矩形的上边界移动到y。
    • moveRight(qreal x): 将矩形的右边界移动到x。
    • moveBottom(qreal y): 将矩形的下边界移动到y。
    • moveTopLeft(const QPointF &p): 将矩形的左上角移动到p。
    • moveBottomRight(const QPointF &p): 将矩形的右下角移动到p。
    • translate(qreal dx, qreal dy): 将矩形沿着x轴平移dx,沿着y轴平移dy。
    • scaled(qreal sx, qreal sy, Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio): 按比例缩放矩形。
  3. 判断与相交

    • isEmpty(): 判断矩形是否为空。
    • isValid(): 判断矩形是否有效。
    • contains(const QPointF &point): 判断点point是否在矩形内。
    • contains(const QRectF &rect): 判断矩形rect是否在矩形内。
    • intersects(const QRectF &rect): 判断矩形rect是否与矩形相交。
    • united(const QRectF &other): 返回一个包含当前矩形和other矩形的最小矩形。
    • intersected(const QRectF &other): 返回当前矩形和other矩形的交集。
  4. 其他

    • size(): 返回矩形的尺寸(宽度和高度)。
    • center(): 返回矩形的中心点。
    • normalized(): 返回一个规范化的矩形,即宽度和高度都为正数的矩形。

六、Static函数介绍

与QRect类类似,QRectF类本身并没有提供静态成员函数。静态函数的应用更多见于其他类,用于提供工具函数、单例管理等。然而,QRectF类提供了一些静态方法,这些方法不是严格意义上的静态成员函数,而是作为类的辅助函数存在,用于执行与矩形相关的计算。例如,QRectF::fromRect(const QRect &rect)可以将一个QRect对象转换为一个QRectF对象。

七、运算符重载

C++支持运算符重载,但QRectF类本身并没有重载运算符。它主要依赖于Qt框架提供的各种成员函数来进行操作。然而,Qt中的其他类如QVector、QString等,利用了运算符重载来提供更简单和自然的语法。

八、详细代码举例

以下是一个简单的代码示例,用于演示QRectF的基本用法:

#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QRectF>

class MyWidget : public QWidget {
public:
    void paintEvent(QPaintEvent *event) {
        Q_UNUSED(event);
        QPainter painter(this);

        // 创建一个左上角坐标为(50.0, 50.0),宽为100.0,高为100.0的矩形
        QRectF rect1(50.0, 50.0, 100.0, 100.0);

        // 创建一个左上角坐标为(150.0, 150.0),右下角坐标为(250.0, 250.0)的矩形
        QPointF topLeft(150.0, 150.0);
        QPointF bottomRight(250.0, 250.0);
        QRectF rect2(topLeft, bottomRight);

        // 将矩形rect2的左上角移动到(300.0, 300.0)
        rect2.moveTopLeft(QPointF(300.0, 300.0));

        // 将矩形rect2沿着x轴平移50.0,沿着y轴平移50.0
        rect2.translate(50.0, 50.0);

        // 绘制矩形rect1和rect2
        painter.setBrush(Qt::NoBrush);
        painter.setPen(Qt::black);
        painter.drawRect(rect1);
        painter.drawRect(rect2);

        // 绘制矩形rect1的中心点和rect2的边界
        painter.setPen(Qt::red);
        painter.drawEllipse(rect1.center(), 5, 5); // 绘制中心点(以红色小圆表示)
        painter.setPen(Qt::blue);
        painter.drawLine(rect2.topLeft(), rect2.bottomRight()); // 绘制对角线(以蓝色线表示)
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    MyWidget widget;
    widget.resize(500, 500);
    widget.show();
    return app.exec();
}

运行上述代码,将看到一个窗口,其中包含两个矩形。一个是左上角坐标为(50.0, 50.0),宽为100.0,高为100.0的矩形;另一个是左上角坐标为(350.0, 350.0)(经过移动和平移后),宽为100.0,高为100.0的矩形。此外,还绘制了第一个矩形的中心点和第二个矩形的对角线,分别用红色和蓝色表示。


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2236613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024双十一有什么是宝妈们值得入手的?双十一母婴必买清单

随着双十一购物狂欢节的临近&#xff0c;宝妈们纷纷开始筹备为家庭增添新的宝贝。作为一年一度的大型促销活动&#xff0c;双十一不仅提供了各种优惠&#xff0c;更是宝妈们囤货的好时机。2024双十一有什么是宝妈们值得入手的&#xff1f;在这个特殊的日子里&#xff0c;母婴产…

VMware Fusion和centos 8的安装

资源 本文用到的文件&#xff1a;centos8镜像 , VMware 软件包 , Termius 文件链接: https://pan.baidu.com/s/1kOES_ZJ8NGN-BnJl6NC7Sg?pwd63ct 安装虚拟机 先 安装 vmware &#xff0c;然后打开&#xff0c;将下载的 iso 镜像拖入 拖入镜像文件iso Continue, 然后随便选…

返回对象的唯一标识符通常是对象的内存地址id(对象或变量)

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 返回对象的唯一标识符 通常是对象的内存地址 id(对象或变量) [太阳]选择题 根据题目代码&#xff0c;执行的结果是&#xff1f; a [1, 2, 3] b a c a.copy() print("【显示】id(a) &…

SAP ABAP开发学习——WDA 四

目录 页面技术的发展 WebDynpro Layout控件 Layout的组件结构 布局方式 流式布局FlowLayout ​编辑 行布局RowLayout 矩阵布局MatrixLayout 网格布局GridLayout 数据绑定 在屏幕上显示数据 数据的双向传输 通过数据绑定控制UI显示 属性节点类型 属性的数据类型 …

速度快还看巡飞,筒射巡飞无人机技术详解

筒射巡飞无人机&#xff08;Launch and Recovery by Tube&#xff0c;LRAT或Launcher-Deployed Loitering Munition&#xff0c;LDLM&#xff09;作为一种新型无人机系统&#xff0c;近年来在军事和民用领域都展现出了巨大的潜力。以下是对筒射巡飞无人机技术的详细解析&#x…

想要监控办公电脑?那款电脑监控软件最好

在现代企业中&#xff0c;电脑监控已经成为了一项不可或缺的管理工具&#xff0c;尤其是对那些有多个部门和员工的公司。良好的电脑监控软件不仅能够帮助管理者了解员工的工作情况&#xff0c;还能提高工作效率、防止内部信息泄露以及保障公司数据安全。市场上有不少监控软件&a…

Elasticsearch(三):Elasticvue使用及DSL执行新增、查询操作

Elasticvue使用及DSL执行CURD 1 概述2 什么是Elasticsearch DSL3 基本结构4 客户端工具介绍4.1 索引介绍4.2 创建简单索引4.3 创建相对完整的索引4.4 插入数据4.4.1 基本插入操作4.4.2 批量插入操作 5 常用的DSL查询类型5.1 match查询5.1.1 match工作原理5.1.2 operator 参数5.…

zynq pl设计中断问题

问题 逻辑工程师vivado工具生成的pl hdf文件后,通过xilinx的工具解析的的dts文件,会出现中断号异常的问题。 原始问题肯定是硬件表现为通讯异常,此处以网口为例,则网口不通。 网口查询 uboot下网口信息 如下命令查询到 两个mac下对应的phy,地址分别为4和6,和硬件设计一…

Hadoop(HDFS)

Hadoop是一个开源的分布式系统架构&#xff0c;旨在解决海量数据的存储和计算问题&#xff0c;Hadoop的核心组件包括Hadoop分布式文件系统&#xff08;HDFS&#xff09;、MapReduce编程模型和YARN资源管理器,最近需求需要用到HDFS和YARN。 文章目录 HDFS优缺点HDFS的读写原理 常…

实在智能受邀出席柳州市智能终端及机器人产业发展合作大会

10 月 27 日至 28 日&#xff0c;由中共柳州市委员会与柳州市人民政府主办的2024柳州市智能终端及机器人产业发展合作大会在柳州莲花山庄隆重举行。大会充分整合各方资源&#xff0c;持续深化与柳州在重大战略规划、重大平台建设、重点产业培育等领域的合作。作为智能体行业的知…

100+SCI科研绘图系列教程(R和python)

科研绘图系列&#xff1a;箱线图加百分比点图展示组间差异-CSDN博客科研绘图系列&#xff1a;箱线图加蜜蜂图展示组间数据分布-CSDN博客科研绘图系列&#xff1a;小提琴图和双侧小提琴图展示组间差异-CSDN博客科研绘图系列&#xff1a;组间差异的STAMP图的ggplot2实现-CSDN博客…

【WRF模拟】全过程总结:WPS预处理及WRF运行

【WRF模拟】全过程总结:WPS预处理及WRF运行 1 数据准备1.1 嵌套域设置(Customize domain)-基于QGis中gis4wrf插件1.2 静态地理数据1.2.1 叶面积指数LAI和植被覆盖度Fpar(月尺度)1.2.2 地面反照率(月尺度)1.2.3 土地利用类型+不透水面积1.2.4 数据处理:geotiff→tiff(W…

鸿蒙的进击之路

1. 题记&#xff1a; 为什么要写鸿蒙&#xff0c;因为她是华为的&#xff0c;为什么是华为就要写&#xff0c;因为华为背负了国人太多太多的包袱&#xff0c;或点赞或抨击。 我是强烈支持华为的&#xff0c;但我会客观公正地去评价华为的产品&#xff0c;就比如这篇博文&#…

国内 ChatGPT中文版镜像网站整理合集(2024/11/08)

一、GPT中文镜像站 ① yixiaai.com 支持GPT4、4o以及o1&#xff0c;支持MJ绘画 ② chat.lify.vip 支持通用全模型&#xff0c;支持文件读取、插件、绘画、AIPPT ③ AI Chat 支持GPT3.5/4&#xff0c;4o以及MJ绘画 1. 什么是镜像站 镜像站&#xff08;Mirror Site&#xff…

【机器学习】决定系数(R²:Coefficient of Determination)

决定系数&#xff0c;也称为 R 平方&#xff0c;是一种用于衡量回归模型预测效果的统计指标。它表示了模型解释目标变量总变异的程度&#xff0c;数值介于 0 和 1 之间&#xff0c;数值越接近 1 表明模型的解释力越强。 1. 的定义和公式 的公式如下&#xff1a; 其中&#xf…

deepfm模型实现招聘职位推荐算法

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

王珊数据库系统概论第六版PDF+第五版课后答案+课件

为了保持科学性、先进性和实用性&#xff0c; 编者在第5版教材基础上对全书内容进行了修改、更新和充实。在科学性方面&#xff0c; 编者在系统篇中增加了第9章关系数据库存储管理&#xff0c; 讲解数据库的逻辑与物理组织方式及索引结构。增加这部分内容有助于学生更好地理解关…

数据集市是什么?有什么优势?

一、数据集市是什么&#xff1f; 1、数据集市的产生背景&#xff1a; 因为数据仓库的工作范围和成本比较巨大&#xff0c;技术部门必须对所有的以全企业的眼光对待任何一次决策分析&#xff0c;这样就变成了成本高、耗时高的大项目&#xff0c;而且这种集中式的数据处理方式往往…

python安装selenium,geckodriver,chromedriver,Selenium IDE

安装浏览器 找到浏览器的版本号 chrome 版本 130.0.6723.92&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09; firfox 116.0.3 (64 位)&#xff0c;但是后面运行的时候又自动更新到了 127.0.0.8923 安装selenium > pip install selenium > pip show …

【LeetCode】【算法】238. 除自身以外数组的乘积

LeetCode 238. 除自身以外数组的乘积 题目描述 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据保证数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位整数范围内。 请不…