QT中qrect的使用
QT是跨平台的GUI应用程序开发框架,使用C++编写。其中,qrect是QT中一个常用的类,用于描述矩形。
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相同的矩形。
- setX(int x):设置矩形左上角的x坐标。
- setY(int y):设置矩形左上角的y坐标。
- setWidth(int width):设置矩形的宽度。
- setHeight(int height):设置矩形的高度。
- setTop(int y):设置矩形的上边界。
- setBottom(int y):设置矩形的下边界。
- setLeft(int x):设置矩形的左边界。
- setRight(int x):设置矩形的右边界。
- 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。
- moveCenter(const QPoint &p):将矩形的中心移动到p。
- translate(int dx, int dy):将矩形沿着x轴平移dx,沿着y轴平移dy。
- setCoords(int x1, int y1, int x2, int y2):设置矩形的左上角坐标为(x1,y1),右下角坐标为(x2,y2)。
- topLeft():返回矩形的左上角坐标。
- topRight():返回矩形的右上角坐标。
- bottomLeft():返回矩形的左下角坐标。
- bottomRight():返回矩形的右下角坐标。
- center():返回矩形的中心点坐标。
- width():返回矩形的宽度。
- height():返回矩形的高度。
- 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矩形的交集。
应用场景
qrect的使用场景非常广泛,例如:
- 绘图:在QT中,绘制图形时需要使用qrect来确定图形的位置和大小。
- 窗口布局:在QT中,窗口布局时需要使用qrect来确定各个控件的位置和大小。
- 碰撞检测:在游戏开发中,碰撞检测时需要使用qrect来判断两个物体是否相交。
- 图像处理:在图像处理中,需要使用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