摘要
1.本文测试验证了QT5中的QSize尺寸类的各成员函数和属性
2.本文适用于学习QT的新手入门及练习,老手请绕路。
3.工程上传至CSDN,供同一时期学习QT的网友参考,可自行查看。
4.转载请注明出处
基本信息
时间:2024.09.13
QT版本:5.14.2
平台:window 10
程序简介:
-
本工程是Qt基础类和基本数据类型专题例程,QSize尺寸类
-
本工程对照着Qt的帮助文档,把每个属性和成员函数测试了一遍
写在前面
这个练习程序,是对照着QT中QSize的帮助文档,一个一个测试形成的。
QSize尺寸类,它主要包含的是宽度和高度,这使其在构造一个矩形,设置窗体的尺寸等等场景下,有较为广泛的应用。
但要注意,QSize和QRect的区别,一个是尺寸类,一个是矩形类。它们不是一个东西,但创建一个矩形对象时,如果它是一个有效的对象,它就一定包含宽度和高度,所以,QSize和QRect又是密切相关的。
本文链接地址 Qt基础类05-尺寸类QSize-CSDN博客,转载请注明出处。
QSize尺寸类,除了提供对宽度和高度的访问及设置外,还提供了缩放、交换宽度和高度,以及操作符重载等相关函数,如heigth(),width(),setHeigth(),setWidth(),scale(),transpose()等等函数。详见下文。
本测试程序,toCGSize()函数没有进行测试。
本测试程序,可流化的2个函数没有进行测试。
重要成员函数举例7个
工程上传至CSDN,供同一时期学习QT的网友参考,可自行查看。
这里,最基本的获取宽度,width()和heigth(),setWidth()和setHeigth()等一眼看上去就知道怎么回事儿的就不再详细介绍、不再贴代码了,只贴测试后的图片。
这里仅把新手小白可能值得一看的内容贴出来。
本测试程序全貌如下图:
QSize QSize::boundedTo(const QSize &otherSize) const
作用:返回一个包含此尺寸和给定otherSize的最小宽度和高度的尺寸。
这话说的,云时雾里的,看英文原文,如下:
Returns a size holding the minimum width and height of this size and the given otherSize.
这里理解的不好,返回的是一个QSize对象,在这个QSize对象,和另外一个指定的QSize对象中,取宽度和高度的最小值,返回来。
如果按此理解,测试程序得重写一下啊~!
QPainter painter(this);
QSize size1(100,50);
QPoint topleftPoint1(400,200);
QRect rect1(topleftPoint1,size1);
painter.setPen(Qt::blue);
painter.drawRect(rect1);
QSize size2;
size2=size2.boundedTo(size1);
QPoint topleftPoint2(650,200);
QRect rect2(topleftPoint2,size2);
painter.setPen(Qt::red);
painter.drawRect(rect2);
label1->setText(tr("rect1使用size1进行构造,其宽度为:%1,高度为:%2").arg(size1.width()).arg(size1.height()));
label2->setText(tr("rect2使用size2=size2.boundedTo(size1),其宽度为:%1,高度为:%2").arg(size2.width()).arg(size2.height()));
程序运行效果如下:
QSize QSize::expandedTo(const QSize &otherSize) const
作用:返回一个包含此尺寸和给定otherSize的最大宽度和高度的尺寸。
英文原文:
Returns a size holding the maximum width and height of this size and the given otherSize.
与上个函数成对儿配套来理解~!
QPainter painter(this);
QSize size1(100,50);
QPoint topleftPoint1(400,200);
QRect rect1(topleftPoint1,size1);
painter.setPen(Qt::blue);
painter.drawRect(rect1);
QSize size2;
size2=size2.expandedTo(size1);
QPoint topleftPoint2(650,200);
QRect rect2(topleftPoint2,size2);
painter.setPen(Qt::red);
painter.drawRect(rect2);
label1->setText(tr("rect1使用size1进行构造,其宽度为:%1,高度为:%2").arg(size1.width()).arg(size1.height()));
label2->setText(tr("rect2使用size2=size2.expandedTo(size1),其宽度为:%1,高度为:%2").arg(size2.width()).arg(size2.height()));
程序运行效果如下:
bool QSize::isEmpty() const
作用:如果宽度和高度中的任何一个小于等于0,则返回true;否则返回false。
这里的Empty不用管它是的“空”,翻译如何理解,想象一下,宽*高所构成的面积,只要面积为0,它就是“空”啦~!
尺寸就没有负值的概念,不说宽度为负5,高度为负6之类的,负值全部无效。
QPainter painter(this);
QSize size1(100,50);
QSize size2(0,40);
QSize size3(60,0);
QSize size4(0,0);
QPoint topleftPoint1(400,200);
QPoint topleftPoint2(650,200);
QPoint topleftPoint3(400,300);
QPoint topleftPoint4(650,300);
QRect rect1(topleftPoint1,size1);
QRect rect2(topleftPoint2,size2);
QRect rect3(topleftPoint3,size3);
QRect rect4(topleftPoint4,size4);
painter.setPen(Qt::blue);
painter.drawRect(rect1);
painter.setPen(Qt::red);
painter.drawRect(rect2);
painter.setPen(Qt::green