QT中qrect的使用介绍,超级详细

2023-10-27

QT中qrect的使用

QT是跨平台的GUI应用程序开发框架,使用C++编写。其中,qrect是QT中一个常用的类,用于描述矩形。

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相同的矩形。
  5. setX(int x):设置矩形左上角的x坐标。
  6. setY(int y):设置矩形左上角的y坐标。
  7. setWidth(int width):设置矩形的宽度。
  8. setHeight(int height):设置矩形的高度。
  9. setTop(int y):设置矩形的上边界。
  10. setBottom(int y):设置矩形的下边界。
  11. setLeft(int x):设置矩形的左边界。
  12. setRight(int x):设置矩形的右边界。
  13. moveLeft(int x):将矩形的左边界移动到x。
  14. moveTop(int y):将矩形的上边界移动到y。
  15. moveRight(int x):将矩形的右边界移动到x。
  16. moveBottom(int y):将矩形的下边界移动到y。
  17. moveTopLeft(const QPoint &p):将矩形的左上角移动到p。
  18. moveBottomRight(const QPoint &p):将矩形的右下角移动到p。
  19. moveCenter(const QPoint &p):将矩形的中心移动到p。
  20. translate(int dx, int dy):将矩形沿着x轴平移dx,沿着y轴平移dy。
  21. setCoords(int x1, int y1, int x2, int y2):设置矩形的左上角坐标为(x1,y1),右下角坐标为(x2,y2)。
  22. topLeft():返回矩形的左上角坐标。
  23. topRight():返回矩形的右上角坐标。
  24. bottomLeft():返回矩形的左下角坐标。
  25. bottomRight():返回矩形的右下角坐标。
  26. center():返回矩形的中心点坐标。
  27. width():返回矩形的宽度。
  28. height():返回矩形的高度。
  29. isEmpty():判断矩形是否为空。
  30. isValid():判断矩形是否有效。
  31. contains(const QPoint &point):判断点point是否在矩形内。
  32. contains(const QRect &rect):判断矩形rect是否在矩形内。
  33. intersects(const QRect &rect):判断矩形rect是否与矩形相交。
  34. united(const QRect &other):返回一个包含当前矩形和other矩形的最小矩形。
  35. intersected(const QRect &other):返回当前矩形和other矩形的交集。

应用场景

qrect的使用场景非常广泛,例如:

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

代码实例

下面是一个简单的代码实例,用于演示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轴平移50
        rect2.translate(50, 50);

        // 绘制矩形rect1和rect2
        painter.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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT中qrect的使用介绍,超级详细 的相关文章

  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 是否可以强制 XMLWriter 将元素写入单引号中?

    这是我的代码 var ptFirstName tboxFirstName Text writer WriteAttributeString first ptFirstName 请注意 即使我使用 ptFirstName 也会以双引号结束 p
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • ASP.NET MVC 6 (ASP.NET 5) 中的 Application_PreSendRequestHeaders 和 Application_BeginRequest

    如何在 ASP NET 5 MVC6 中使用这些方法 在 MVC5 中 我在 Global asax 中使用了它 现在呢 也许是入门班 protected void Application PreSendRequestHeaders obj
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • IDEA项目打包几种方式

    IDEA项目打包几种方式 第一种 最常见的使用maven 项目的pom文件中引入spring boot maven plugin插件
  • 获取第几天时间的日期

    获取过去第几天的日期 param past return public static String getPastDate int past Calendar calendar Calendar getInstance DAY OF YEA
  • Java将数据写入Excel

    引入Maven依赖
  • Magento订单管理列表扩展字段

    扩展Magento订单管理列表成功 为了方便管理订单 应要求对Mangeto后台的订单管理列表进行扩展 在原有的基础上增加一些字段 比如 产品名称 产品型号 数量等 这是没有扩展之前的Magento 订单管理列表 这是扩展后的图片 上图片中
  • 阿里云ECS部署L2TP/IPSEC,访问服务器内网

    阿里云ECS部署L2TP IPSEC 访问服务器内网 准备工作 自建NAT网关 添加路由 地址转换 部署xl2tpd 安装服务 修改配置 将vpn网段添加到白名单 win10连接vpn 完成 参考链接 准备工作 三台阿里云ECS服务器 操作
  • Linux环境下安装maven

    一 下载maven压缩包 官网地址 http maven apache org download cgi 二 上传到Linux的usr local目录 cd usr local 可以使用rz目录上传 三 解压压缩包 tar zxvf apa
  • 12V转5V稳压电路详细分析(7805三端稳压,LM2596稳压)

    7805线性三端稳压 DCDC的意思是直流变到直流 不同直流电源值的转换 只要符合这个定义都可以叫DCDC转换器 或称之为开关电源或开关调整器 7805属于常用的线性三端稳压器 输入电压范围不大于35V 输入输出压差2V 最大输出电流1 5
  • idea安装scala

    目录 一 前期准备 先在windows下安装好jdk 才可以安装scala 二 Widows下安装SCALA 二 idea下安装scala插件 一 前期准备 先在windows下安装好jdk 才可以安装scala 在安装之前 确保你的电脑上
  • * RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 08B5H BYTE (108%) *

    keil uVsion4的编译的时候出现 RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT 博主今天在使用keil uVsion4的编译的时候出现 RESTRICTED VERSION W
  • 【8005】如何设置idea汉化中文?

    问题场景 自IntelliJ Idea 2020 1 正式发布了 重要的是开始支持中文 虽然支持 但不是默认中文 你还需要下载插件安装 如果想使用中文汉化 先把版本升升级哦 今天有个同学问我怎么汉化 就写个博客算了 纪念一下 解决方案 总步
  • DOS攻击工具介绍

    DoS Denial Of Service 攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源 目的是让目标计算机或网络无法提供正常的服务或资源访问 使目标系统服务系统停止响应甚至崩溃 然而随着网络上免费的可用
  • STM32输出PWM时,PWM1和PWM2的区别

    TIM OCMode PWM2 TIM OCMode PWM1 首先 本人虽然初学STM32但极力反对一种误人子弟的观点 对于STM32这样级别的MCU 有库函数就不用去看寄存器怎么操作的了 好了 言归正传 最近总看到很多朋友对于PWM这个
  • AOP切面的优先级Order属性

    如果有两个切面 那么谁先谁后怎么判断 那如果我们要指定切面的执行顺序呢 可以使用 Order注解指定切面的优先级 值越小优先级越高 举例 两个切面类 Order 2 Aspect Component public class MyAspec
  • jQuery VS AngularJS 你更钟爱哪个?

    在这一次的Web开发教程中 我会尽力解答有关于jQuery和AngularJS的两个非常常见的问题 即jQuery和AngularJS之间的区别是什么 也就是说jQuery VS AngularJS 今天我不会仅仅只是解释两者的差异和列举两
  • 最小二乘法拟合圆心与半径

    公众号 轻松玩转机器人 欢迎关注 1 算法介绍 最小二乘法的目的 通俗来说 就是拟合变量之间的关系 由于现实世界观测的变量存在噪声 找不到完美 不存在误差的关系 因此我们退而求其次 尽可能减小误差影响 误差有正有负 而我们希望消除正负方向的
  • FPGA实现数码管数字累加

    一 基本原理 FPGA数码管简单显示 简单数码管原理上文介绍过 本文主要介绍视觉在1ms内感知不到数码管数字来回切换的变动 1ms内数字跳变 眼睛感知是数字一直在显示 二 代码原理 1 显示模块 1 根据需要显示的数字 取出个 十 百 千位
  • 针对TextView更换字体颜色同时设置不同的点击事件的设计方案

    在需求中我们需要将下面的文字放到一起 并更改不同的颜色进行区分 还需要将用 用户协议 和 隐私政策 添加不同的点击事情 去跳转进行展示不同的说明 首先这是一个弹框 我们需要先去定义它的布局文件
  • 【科普贴】USB_ID介绍

    一 功能介绍 1 当前很多SOC 都支持OTG功能 所以mini micro USB的接口上通常会拓展一个USB ID引脚 如下图 2 USB ID pin 为低电平时 则设备为host模式 比如PC和支持OTG设备做主设备时 USB ID
  • platformio添加外部库文件方法

    方法1 在这里搜索所需要的库函数进行添加到工程里 方法2 常用 1 准备好所需要的库文件 2 打开工程文件夹 完成以上4步后 重启VScode 即可完成库文件添加 方法3 常用 当创建完工程后 在该工程中添加库 方法2是添加全局库的方法 添
  • QT中qrect的使用介绍,超级详细

    QT中qrect的使用 QT是跨平台的GUI应用程序开发框架 使用C 编写 其中 qrect是QT中一个常用的类 用于描述矩形 qrect的函数原型参数介绍 在使用qrect时 我们需要了解以下几个函数原型参数 QRect 构造函数 创建一