「QT」几何数据类 之 QRect 矩形类

news/2024/11/15 7:05:06/

在这里插入图片描述

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

Qt中的QRect类

一、类的引言

QRect是Qt GUI框架中用于描述矩形的类,它提供了多种构造函数和方法来设置和操作矩形。QRect类在Qt中扮演着重要的角色,广泛应用于绘图、窗口布局、碰撞检测及图像处理等多个方面。通过QRect,开发者可以方便地定义矩形的位置、大小及进行各种几何操作。

二、使用范围

  1. 绘图:在Qt中绘制图形时,使用QRect来确定图形的位置和大小。
  2. 窗口布局:在Qt的窗口布局中,使用QRect来确定各个控件的位置和大小。
  3. 碰撞检测:在游戏开发中,使用QRect来判断两个物体是否相交。
  4. 图像处理:在图像处理中,使用QRect来确定图像的位置和大小。

三、类的头文件

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

#include <QRect>

四、类的构造介绍

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

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

五、共有函数介绍

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

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

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

    • moveLeft(int x): 将矩形的左边界移动到x。
    • moveTop(int y): 将矩形的上边界移动到y。
    • moveRight(int x): 将矩形的右边界移动到x。
    • moveBottom(int y): 将矩形的下边界移动到y。
    • moveTopLeft(const QPoint &p): 将矩形的左上角移动到p。
    • moveBottomRight(const QPoint &p): 将矩形的右下角移动到p。
    • translate(int dx, int dy): 将矩形沿着x轴平移dx,沿着y轴平移dy。
  3. 判断与相交

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

六、Static函数介绍

在Qt中,静态函数属于类本身,而不是类的某个特定对象,调用时不需要创建类的实例,可以直接通过类名来调用。然而,QRect类本身并没有提供静态成员函数,静态函数的应用更多见于其他类,例如提供工具函数、单例管理等。

七、运算符重载

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

八、详细代码举例

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

#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QRect>class MyWidget : public QWidget {
public:void paintEvent(QPaintEvent *event) {Q_UNUSED(event);QPainter painter(this);// 创建一个左上角坐标为(50,50),宽为100,高为100的矩形QRect rect1(50, 50, 100, 100);// 创建一个左上角坐标为(150,150),右下角坐标为(250,250)的矩形QPoint topLeft(150, 150);QPoint bottomRight(250, 250);QRect rect2(topLeft, bottomRight);// 将矩形rect2的左上角移动到(300,300)rect2.moveTopLeft(QPoint(300, 300));// 将矩形rect2沿着x轴平移50,沿着y轴平移50rect2.translate(50, 50);// 绘制矩形rect1和rect2painter.drawRect(rect1);painter.drawRect(rect2);}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);MyWidget widget;widget.resize(500, 500);widget.show();return app.exec();
}

运行上述代码,将看到一个窗口,其中包含两个矩形。一个是左上角坐标为(50,50),宽为100,高为100的矩形;另一个是左上角坐标为(400,400),宽为100,高为100的矩形。


在这里插入图片描述


http://www.ppmy.cn/news/1545965.html

相关文章

dolphin 配置data 从文件导入hive 实践(一)

datax 支持多种数据源的相互读写&#xff0c;作为开源软件&#xff0c;提供了离线采集功能&#xff0c;方便系统开发&#xff0c;过程中遇到诸多配置&#xff0c;需要开发者自己探索&#xff0c;免费同样有成本 配置模板 {"setting": {},"job": {"s…

【p2p、分布式,区块链笔记 Torrent】WebTorrent的add和seed函数

在【p2p、分布式&#xff0c;区块链笔记 Torrent】WebTorrent的上传和下载界面的示例中&#xff0c;主要通过WebTorrent类的add和seed函数实现相关功能。这两个函数都返回一个Torrent类对象的实例。 seed函数 import createTorrent, { parseInput } from create-torrent // &…

信息泄露漏洞一文速通

文章目录 信息泄露漏洞一文速通敏感信息の概念敏感信息の分类企业敏感信息用户敏感信息站点敏感信息 如何挖掘信息泄露漏洞&#xff1f;信息泄露风险清单&#xff08;checklist&#xff09;未授权访问类文件与数据泄露开发与调试信息泄露公共配置文件泄露其他敏感信息泄露点 威…

【51单片机】LED点阵屏 原理 + 使用

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 LED点阵屏显示原理74HC595 编码LED点阵屏显示笑脸LED点阵屏显示动画 LED点阵屏 点阵屏在开发板的右上角&#xff0c;注意使用前需要…

Sigrity SPEED2000 Power Ground Noise Simulation模式如何进行电源阻抗仿真分析操作指导(二)-有电容

Sigrity SPEED2000 Power Ground Noise Simulation模式如何进行电源阻抗仿真分析操作指导(二)-有电容 Sigrity SPEED2000 Power Ground Noise Simulation模式如何进行电源阻抗仿真分析操作指导(一)-无电容详细介绍了如何在该模式查看电源的自阻抗&#xff0c;它是没有电容参与的…

ClickHouse创建分布式表

ClickHouse创建分布式表 当数据量剧增的时候&#xff0c;clickhouse是采用分片的方式进行数据的存储的&#xff0c;类似于redis集群的实现方式。然后想进行统一的查询的时候&#xff0c;因为涉及到多个本地表&#xff0c;可以通过分布式表的方式来提供统一的入口。由于是涉及到…

CentOS 7 安装 ntp,自动校准系统时间

1、安装 ntp yum install ntp 安装好后&#xff0c;ntp 会自动注册成为服务&#xff0c;服务名称为 ntpd 2、查看当前 ntpd 服务的状态 systemctl status ntpd 3、启动 ntpd 服务、查看 ntpd 服务的状态 systemctl start ntpdsystemctl status ntpd 4、设置 ntpd 服务开机启…

昇思大模型平台打卡体验活动:基于MindSpore实现GPT1影评分类

如果你对MindSpore感兴趣&#xff0c;可以关注昇思MindSpore社区 大模型平台 平台说明 昇思大模型平台旨在为AI学习者和开发者提供在线学习的项目、模型、大模型体验和数据集的平台。我们也添加了各领域的经典数据集来帮助学习者解决AI学习过程中的一系列难题&#xff0c; 如…