//for starf study
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDebug>
#include<QSize>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//QSize类使用整数类型值定义一个二维对象的尺寸,即宽和高
QSize sz = QSize(150, 70);
qDebug()<<sz; //得到:QSize(150, 70)
qDebug()<<sz.isEmpty(); //w或者h<= 0 返回true
qDebug()<<sz.isNull(); //W 且 h == 0 返回true
qDebug()<<sz.isValid(); //w 且 h >= 0 返回true
qDebug()<<sz.width(); //获取当前宽度
qDebug()<<sz.height(); //获取当前宽度
sz.setWidth(sz.width() + 20); //重设宽度函数
sz.setHeight(sz.height() + 30); //重设高度
int &wx = sz.rwidth(); // 获取宽度引用
int &hx = sz.rheight(); // 获取高度引用
qDebug()<<wx<<hx;
sz.transpose(); //交换QSize的 w和 h,而且直接改变自身
QSize newSz = sz.transposed(); //交换QSize的w和h,但是自身不改变,而是返回改变后的QSize
qDebug()<<newSz<<sz;
//scale的3个参数为:Qt::AspectRatioMode 此枚举类型定义缩放矩形时纵横比的变化
//Qt::IgnoreAspectRatio 大小可自由缩放。不保留纵横比
//Qt::KeepAspectRatio 在给定的矩形内,大小被缩放为一个尽可能大的矩形,并保留纵横比。
//Qt::KeepAspectRatioByExpanding 大小被缩放为给定矩形外尽可能小的矩形,保留纵横比。
sz.scale(20,30,Qt::IgnoreAspectRatio); //重设尺寸为自由尺寸,不保留纵横比
QSize scale = sz.scaled(50,60,Qt::KeepAspectRatio); //重设尺寸但是保留纵横比
qDebug()<<sz << scale; //scale 和 scaled 有一个重载,即把x,y两个参数替换成另一个QSize对象
sz.setWidth(70);
//此时:sz = QSize(70, 30)
// scale = QSize(40, 60)
QSize bound = sz.boundedTo(scale); //将自身和参数做比较 选取较小的w和较小的h组合成新的QSize返回
QSize expanded = sz.expandedTo(scale);//将自身和参数做比较 选取较大的w和较小的h组合成新的QSize返回
qDebug()<<bound<<expanded;
//bound = QSize(40, 30)
//expanded = QSize(70, 60)
}
MainWindow::~MainWindow()
{
delete ui;
}
QSize所有方法使用 (QT5.12)
于 2022-03-24 22:06:16 首次发布
本文探讨了Qt中的QSize类在窗口尺寸设置、判断与调整中的用法,包括空、无效和有效状态检查,以及如何通过scale和scaled方法进行尺寸缩放并保持纵横比。此外,还讲解了boundingTo和expandedTo方法在尺寸约束中的应用。

529

被折叠的 条评论
为什么被折叠?



