#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDebug>
#include<QRect>
#include <QPoint>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//QRect类使用整数在平面上精确定义一个矩形。
QRect rc = QRect(100,100,200,150); //构造函数有几个重载
//输入左上角坐标和右下角坐标(QPoint)
//输入左上角坐标和一个QSize的对象表示尺寸
qDebug()<<rc; //QRect(100,100 200x150) void QRect::adjust(int dx1, int dy1, int dx2, int dy2)
rc.adjust(5,6,0,0); //前两个参数直接修改左上角的值 即topLeft.x() + dx1,topLeft.y() + dy1
qDebug()<<rc; //QRect(105,106 195x144) 矩形左上角被修改,但是右下角不变 所以矩形实际上缩小了
rc.adjust(0,0,5,6); //后两个参数修改右下角坐标位置 将其平移和左上角一样的距离
qDebug()<<rc; //QRect(105,106 200x150) 右下角被扯大 面积变大
QRect adjust = rc.adjusted(-10,-10,10,10); //adjusted 不修改原本的矩形;返回一个新的矩形 adjust修改原本矩形
qDebug()<<adjust;
QRect num = QRect(10,10,150,200);
qDebug()<<num.bottomLeft()<<num.bottomRight()<<num.center(); //返回矩形左下角,右下角,中心的坐标
qDebug()<<num.contains(QPoint(10,10))<<num.contains(QPoint(10,10), true); //包含查询函数 打印:true false
//第二个参数不填或者为false,第一个参数所表示的点在矩形内部或者边缘都返回true
//第二个参数为true,则第一个参数必须完全存在矩形内部才可以返回true
//参数有几个重载 参数1可以是一个Rect 的矩形,判断方式一样
//参数1可以是两个int,代表坐标的x,y 判断规则一样
int x1,y1,x2,y2,width,height;
num.getCoords(&x1,&y1,&x2,&y2);
qDebug()<<x1<<y1<<x2<<y2; //函数获取矩形左上角坐标和右下角坐标
num.getRect(&x1,&y1,&width,&height);
qDebug()<<x1<<y1<<width<<height; //函数获取矩形左上角坐标尺寸(w,h)
qDebug()<<num.height(); //返回矩形高度
qDebug()<<num.intersected(rc); //返回矩形和给定矩形的相交的部分(也是一个矩形,返回类型为QRect)
qDebug()<<num.intersects(rc); // 如果两个矩形存在相交部分(边线有重合部分也算),那么返回true
qDebug()<<num.bottom(); //函数返回矩形左上角y值 + 矩形高度 - 1 (这个减一是QT bug需要手动修正)返回矩形底部框的y值
qDebug()<<num.left(); // 返回矩形左侧框的x值
qDebug()<<num.top(); //返回矩形上边缘的y坐标
qDebug()<<num.right(); //返回矩形右边缘的x值 此函数返回left()+width()-1 (属于QTbug 需要手动修正)
qDebug()<<num.isEmpty(); //判断是否是空矩形,判断条件是 left() > right() || top() > bottom()
qDebug()<<num.isNull(); //矩形存在判断,判断条件是 right() == left() - 1 && bottom() == top() - 1
qDebug()<<num.isValid(); //判断是否有效矩形 有效矩形满足条件 left() <= right() && top() <= bottom()
QRect addMargin = num.marginsAdded(QMargins(5,2,5,2)); //返回增加外边距之后的矩形
qDebug()<< addMargin<<num.center()<<addMargin.center(); //增加的时候,中心不变
QRect remMargin = num.marginsRemoved(QMargins(5,2,5,2)); //返回去掉外边距之后的矩形
qDebug()<<remMargin<<num.center()<<remMargin.center(); ; //缩小的时候,中心不变
qDebug()<<num;
num.moveBottom(300); //垂直移动矩形,将矩形的底边保留在给定的y坐标处。矩形的大小不变。
qDebug()<<num;
num.moveBottomLeft(QPoint(15,250)); //移动矩形,将左下角保留在给定位置。矩形的大小不变。
qDebug()<< num;
num.moveBottomRight(QPoint(190,250)); //移动矩形,将右下角保留在给定位置。矩形的大小不变。
qDebug()<< num;
num.moveCenter(QPoint(200,200)); //移动矩形,使中心点保持在给定位置。矩形的大小不变。
qDebug()<< num;
num.moveLeft(80); //水平移动矩形,将矩形的左边缘保留在给定的x坐标处。矩形的大小不变。
qDebug()<<num;
num.moveRight(500); //水平移动矩形,将矩形的右边缘保留在给定的x坐标处。矩形的大小不变。
qDebug()<<num;
num.moveTo(10,10); //移动矩形,将左上角保留在给定位置(x,y)。矩形的大小不变。
qDebug()<<num;
num.moveTop(20); //垂直移动矩形,将矩形的上边缘保留在给定的y坐标处。矩形的大小不变。
qDebug()<<num;
num.moveTopLeft(QPoint(10,10)); //移动矩形,将左上角保留在给定位置。矩形的大小不变。
qDebug()<<num;
num.moveTopRight(QPoint(500,500));//移动矩形,将右上角保留在给定位置。矩形的大小不变。
qDebug()<<num;
QRect normal = num.normalized(); //返回一个标准化的矩形;具有非负宽度和高度的矩形,如果width()<0,则该函数交换左右角,如果height()<0,则交换顶角和底角。
qDebug()<<normal;
normal.setBottom(510);//将矩形的底边设置为给定的y坐标。永远不会更改矩形的上边缘。所以矩形会在Y轴方向上被拉伸
qDebug()<<normal;
normal.setBottomLeft(QPoint(200,550)); //将矩形的左下角设置为给定位置。永远不会更改矩形的右上角,所以矩形会向左下角拉伸
//void QRect::setBottomRight(const QPoint &position) 矩形向右下角拉伸,左上角固定
//void QRect::setLeft(int x) 将矩形的左边缘设置为给定的x坐标。矩形向左侧拉伸,右侧固定
//void QRect::setRight(int x) 将矩形的右边侧的横坐标设置为给定的x坐标,矩形向右侧拉伸,左侧固定
//void QRect::setTop(int y) 将矩形的顶部的纵坐标设置为给定的Y坐标,矩形向上方拉伸,底部固定
//void QRect::setTopLeft(const QPoint &position) 矩形向左上角拉伸,右下角固定
//void QRect::setTopRight(const QPoint &position) 矩形向左上角拉伸,右下角固定
//void QRect::setX(int x) 将矩形的左边缘设置为给定的x坐标。矩形向左侧拉伸,右侧固定
//void QRect::setY(int y)将矩形的上边缘设置为给定的y坐标。矩形向上方拉伸,下侧固定
normal.setCoords(10,12,110,112); //将矩形左上角设置为(10,10),右下角设置为(110,112)
normal.setHeight(80); //将矩形的高度设置为给定高度。底部边缘已更改,但顶部边缘未更改。
normal.setWidth(140); //将矩形的宽度设置为给定宽度。右侧边缘被改动,左侧边缘不动
normal.setRect(10,10,150,200); //重新设置矩形的位置和尺寸
normal.setSize(QSize(120,170)); //将矩形设置为给定大小 左上角位置不变
QSize sz = normal.size(); //返回矩形的尺寸信息
QPoint topLeft = normal.topLeft(); //返回矩形左上角坐标
//QPoint QRect::topRight() const 返回矩形右上角坐标
qDebug()<<normal;
normal.translate(10,15); //平移矩形,参数1表示横坐标移动的距离,参数2表示纵坐标移动的距离
qDebug()<<normal;
normal.translate(QPoint(10,10));//平移函数的重载 平移参数为offset的横坐标和纵坐标
qDebug()<<normal;
//QRect QRect::translated(int dx, int dy) 和上面的类型,也有同样的重载,不会移动原本的矩形,而是返回一个新的矩形
QRect tran = normal.transposed(); //更换矩形的长和宽 左上角不变
qDebug()<<tran;
QRect unit = normal.united(rc); //返回矩形和给定矩形的边框矩形(就是刚刚好能把两个矩形包裹起来的一个大矩形)
qDebug()<<normal.width(); //返回矩形的宽度
//int QRect::x() const 返回矩形左边缘的x坐标。相当于left()。
//int QRect::y() const 返回矩形上边缘的y坐标。相当于top()。
}
MainWindow::~MainWindow()
{
delete ui;
}
QRect所有方法功能(QT5.12)
于 2022-03-25 00:21:10 首次发布