QRectF所有方法功能(QT5.12)


#include "mainwindow.h"
#include "ui_mainwindow.h"

#include<QDebug>

#include<QRectF>
#include <QPoint>

//QRectF 和 QRect 一样的功能  但是所有参数可以是小数   可以更精确的定义矩形
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //QRectF类使用整数在平面上精确定义一个矩形。
    QRectF rc = QRectF(100.1,100.1,200.1,150.1); //构造函数有几个重载  可以是小数
                                                             //输入左上角坐标和右下角坐标(QPointF)
                                                             //输入左上角坐标和一个QSizeF的对象表示尺寸
    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)  右下角被扯大 面积变大
    QRectF adjust = rc.adjusted(-10,-10,10,10);  //adjusted 不修改原本的矩形;返回一个新的矩形 adjust修改原本矩形
    qDebug()<<adjust;
    QRectF num = QRectF(10,10,150,200);

    qDebug()<<num.bottomLeft()<<num.bottomRight()<<num.center(); //返回矩形左下角,右下角,中心的坐标
    qDebug()<<num.contains(QPointF(10,10));  //包含查询函数  打印:true false
                                                            //第二个参数不填或者为false,第一个参数所表示的点在矩形内部返回true
                                                            //参数有几个重载  参数1可以是一个QRectF 的矩形,判断方式一样
                                                            //参数1可以是两个int,代表坐标的x,y 判断规则一样
    double x1,y1,x2,y2,width,height;
    num.getCoords(&x1,&y1,&x2,&y2);  //获取各个值需要使用double类型
    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); //返回矩形和给定矩形的相交的部分(也是一个矩形,返回类型为QRectF)
    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()

    QRectF addMargin = num.marginsAdded(QMargins(5,2,5,2));  //返回增加外边距之后的矩形
    qDebug()<< addMargin<<num.center()<<addMargin.center();          //增加的时候,中心不变
    QRectF remMargin = num.marginsRemoved(QMargins(5,2,5,2)); //返回去掉外边距之后的矩形
    qDebug()<<remMargin<<num.center()<<remMargin.center(); ;  //缩小的时候,中心不变
    qDebug()<<num;
    num.moveBottom(300); //垂直移动矩形,将矩形的底边保留在给定的y坐标处。矩形的大小不变。
    qDebug()<<num;
    num.moveBottomLeft(QPointF(15,250)); //移动矩形,将左下角保留在给定位置。矩形的大小不变。
    qDebug()<< num;
    num.moveBottomRight(QPointF(190,250)); //移动矩形,将右下角保留在给定位置。矩形的大小不变。
    qDebug()<< num;
    num.moveCenter(QPointF(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(QPointF(10,10)); //移动矩形,将左上角保留在给定位置。矩形的大小不变。
    qDebug()<<num;
    num.moveTopRight(QPointF(500,500));//移动矩形,将右上角保留在给定位置。矩形的大小不变。
    qDebug()<<num;

    QRectF normal = num.normalized(); //返回一个标准化的矩形;具有非负宽度和高度的矩形,如果width()<0,则该函数交换左右角,如果height()<0,则交换顶角和底角。
    qDebug()<<normal;

    normal.setBottom(510);//将矩形的底边设置为给定的y坐标。永远不会更改矩形的上边缘。所以矩形会在Y轴方向上被拉伸
    qDebug()<<normal;
    normal.setBottomLeft(QPointF(200,550)); //将矩形的左下角设置为给定位置。永远不会更改矩形的右上角,所以矩形会向左下角拉伸
    //void QRectF::setBottomRight(const QPointF &position)  矩形向右下角拉伸,左上角固定
    //void QRectF::setLeft(int x)  将矩形的左边缘设置为给定的x坐标。矩形向左侧拉伸,右侧固定
    //void QRectF::setRight(int x) 将矩形的右边侧的横坐标设置为给定的x坐标,矩形向右侧拉伸,左侧固定
    //void QRectF::setTop(int y) 将矩形的顶部的纵坐标设置为给定的Y坐标,矩形向上方拉伸,底部固定
    //void QRectF::setTopLeft(const QPointF &position) 矩形向左上角拉伸,右下角固定
    //void QRectF::setTopRight(const QPointF &position) 矩形向左上角拉伸,右下角固定
    //void QRectF::setX(int x) 将矩形的左边缘设置为给定的x坐标。矩形向左侧拉伸,右侧固定
    //void QRectF::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(QSizeF(120,170)); //将矩形设置为给定大小 左上角位置不变

    QSizeF sz = normal.size(); //返回矩形的尺寸信息

   QPointF topLeft =  normal.topLeft(); //返回矩形左上角坐标
   //QPoint QRectF::topRight() const  返回矩形右上角坐标

   qDebug()<<normal;
   normal.translate(10,15); //平移矩形,参数1表示横坐标移动的距离,参数2表示纵坐标移动的距离
   qDebug()<<normal;
   normal.translate(QPointF(10,10));//平移函数的重载 平移参数为offset的横坐标和纵坐标
   qDebug()<<normal;
   //QRectF QRectF::translated(int dx, int dy)  和上面的类型,也有同样的重载,不会移动原本的矩形,而是返回一个新的矩形
   QRectF tran = normal.transposed();  //更换矩形的长和宽  左上角不变
    qDebug()<<tran;
    QRectF unit = normal.united(rc); //返回矩形和给定矩形的边框矩形(就是刚刚好能把两个矩形包裹起来的一个大矩形)

    qDebug()<<normal.width(); //返回矩形的宽度
    //int QRectF::x() const   返回矩形左边缘的x坐标。相当于left()。
    //int QRectF::y() const   返回矩形上边缘的y坐标。相当于top()。
}

MainWindow::~MainWindow()
{
    delete ui;
}


  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值