「QT」几何数据类 之 QRect 矩形类
✨博客主页 | ||
---|---|---|
何曾参静谧的博客 | ||
📌文章专栏 | ||
「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,开发者可以方便地定义矩形的位置、大小及进行各种几何操作。
二、使用范围
- 绘图:在Qt中绘制图形时,使用QRect来确定图形的位置和大小。
- 窗口布局:在Qt的窗口布局中,使用QRect来确定各个控件的位置和大小。
- 碰撞检测:在游戏开发中,使用QRect来判断两个物体是否相交。
- 图像处理:在图像处理中,使用QRect来确定图像的位置和大小。
三、类的头文件
QRect类的头文件是<QRect>
,在使用QRect类时,需要包含这个头文件。
#include <QRect>
四、类的构造介绍
QRect类提供了多种构造函数,允许通过不同的参数来创建矩形对象:
QRect()
: 创建一个空矩形。QRect(int x, int y, int width, int height)
: 创建一个左上角坐标为(x, y),宽度为width,高度为height的矩形。QRect(const QPoint &topLeft, const QPoint &bottomRight)
: 创建一个左上角坐标为topLeft,右下角坐标为bottomRight的矩形。QRect(const QRect &other)
: 创建一个与other相同的矩形。
五、共有函数介绍
QRect类提供了丰富的成员函数来操作矩形对象:
-
设置和获取位置与大小
setX(int x)
: 设置矩形左上角的x坐标。setY(int y)
: 设置矩形左上角的y坐标。setWidth(int width)
: 设置矩形的宽度。setHeight(int height)
: 设置矩形的高度。topLeft()
: 返回矩形的左上角坐标。topRight()
: 返回矩形的右上角坐标。bottomLeft()
: 返回矩形的左下角坐标。bottomRight()
: 返回矩形的右下角坐标。width()
: 返回矩形的宽度。height()
: 返回矩形的高度。
-
移动和缩放
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。
-
判断与相交
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轴平移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的矩形。