//for starf study
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDebug>
#include<QSizeF>
//QSizeF和QSize功能一样 但是可以使用浮点数做更精确的控制
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//QSizeF类使用整数类型值定义一个二维对象的尺寸,即宽和高
QSizeF sz = QSizeF(150.1, 70.1);
qDebug()<<sz; //得到:QSizeF(150.1, 70.1)
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); //重设高度
double &wx = sz.rwidth(); // 获取宽度引用
double &hx = sz.rheight(); // 获取高度引用
qDebug()<<wx<<hx;
sz.transpose(); //交换QSizeF的 w和 h,而且直接改变自身
QSizeF newSz = sz.transposed(); //交换QSizeF的w和h,但是自身不改变,而是返回改变后的QSizeF
qDebug()<<newSz<<sz;
//scale的3个参数为:Qt::AspectRatioMode 此枚举类型定义缩放矩形时纵横比的变化
//Qt::IgnoreAspectRatio 大小可自由缩放。不保留纵横比
//Qt::KeepAspectRatio 在给定的矩形内,大小被缩放为一个尽可能大的矩形,并保留纵横比。
//Qt::KeepAspectRatioByExpanding 大小被缩放为给定矩形外尽可能小的矩形,保留纵横比。
sz.scale(20,30,Qt::IgnoreAspectRatio); //重设尺寸为自由尺寸,不保留纵横比
QSizeF scale = sz.scaled(50,60,Qt::KeepAspectRatio); //重设尺寸但是保留纵横比
qDebug()<<sz << scale; //scale 和 scaled 有一个重载,即把x,y两个参数替换成另一个QSizeF对象
sz.setWidth(70);
//此时:sz = QSizeF(70, 30)
// scale = QSizeF(40, 60)
QSizeF bound = sz.boundedTo(scale); //将自身和参数做比较 选取较小的w和较小的h组合成新的QSizeF返回
QSizeF expanded = sz.expandedTo(scale);//将自身和参数做比较 选取较大的w和较小的h组合成新的QSizeF返回
qDebug()<<bound<<expanded;
//bound = QSizeF(40, 30)
//expanded = QSizeF(70, 60)
}
MainWindow::~MainWindow()
{
delete ui;
}
QSizeF所有方法功能(QT5.12)
最新推荐文章于 2023-04-16 21:15:05 发布