✨博客主页 | ||
---|---|---|
何曾参静谧的博客 | ||
📌文章专栏 | ||
「QT」QT5程序设计 | ||
📚全部专栏 | ||
「VS」Visual Studio | 「C/C++」C/C++程序设计 | 「UG/NX」BlockUI集合 |
「Win」Windows程序设计 | 「DSA」数据结构与算法 | 「UG/NX」NX二次开发 |
「QT」QT5程序设计 | 「File」数据文件格式 | 「PK」Parasolid函数说明 |
「Py」Python程序设计 | 「Math」探秘数学世界 |
目录
- Qt中QSize类详解(基于Qt 5.15版本)
- 一、类的引言
- 二、使用范围
- 三、类的头文件
- 四、类的继承
- 五、类的构造介绍
- 六、共有函数介绍
- 七、static函数介绍
- 八、运算符重载
- 九、详细代码举例
Qt中QSize类详解(基于Qt 5.15版本)
一、类的引言
QSize类是Qt框架中一个非常重要的几何数据类,它用于表示二维对象的大小,即宽度和高度。该类在Qt的图形界面编程中广泛应用,特别是在设置控件尺寸、布局管理、图形绘制等场景中。QSize类提供了丰富的成员函数和运算符重载,使得对尺寸的操作更加便捷和高效。
二、使用范围
QSize类主要用于以下场景:
- 设置窗口或控件的尺寸。
- 在布局管理器中指定控件的大小。
- 在图形绘制中计算矩形或其他形状的大小。
- 进行尺寸比较、缩放、交换等操作。
三、类的头文件
在Qt 5.15版本中,QSize类的头文件是<QSize>
,通常通过包含<QtCore/QSize>
来引用。在使用QSize类之前,需要确保在项目的.pro文件中添加了QT += core
配置,以包含QtCore模块。
四、类的继承
QSize类是一个独立的类,不继承自其他类。它实现了对二维对象大小的表示和操作功能,是Qt几何数据类体系中的一个重要组成部分。
五、类的构造介绍
QSize类提供了两个构造函数:
QSize()
:构造一个非法的QSize对象,其宽度和高度均被设置为无效值(通常是-1)。QSize(int width, int height)
:构造一个宽度为width
、高度为height
的QSize对象。
六、共有函数介绍
QSize类提供了以下共有成员函数:
int width() const
:返回QSize对象的宽度。int height() const
:返回QSize对象的高度。void setWidth(int width)
:设置QSize对象的宽度。void setHeight(int height)
:设置QSize对象的高度。bool isEmpty() const
:如果宽度和高度中的任何一个小于等于0,则返回true;否则返回false。bool isNull() const
:在Qt 5.15版本中,isNull()
函数通常返回false,因为QSize对象没有“空”的概念(与QPoint等类不同)。bool isValid() const
:如果宽度和高度都是有效的(即大于0),则返回true;否则返回false。QSize boundedTo(const QSize &other) const
:返回一个包含此尺寸和给定other
尺寸的最小宽度和高度的尺寸。QSize expandedTo(const QSize &other) const
:返回一个包含此尺寸和给定other
尺寸的最大宽度和高度的尺寸。QSize scaled(int w, int h, Qt::AspectRatioMode mode) const
:根据指定的模式mode
,将大小缩放为具有给定宽度w
和高度h
的矩形。QSize scaled(const QSize &s, Qt::AspectRatioMode mode) const
:与上一个函数类似,但使用另一个QSize对象s
作为缩放目标。void transpose()
:交换宽度和高度值。QSize transposed() const
:返回交换宽度和高度后的大小,不改变自身。
七、static函数介绍
在Qt 5.15版本中,QSize类没有提供static成员函数。但Qt框架中的其他类可能会提供与QSize相关的static函数,用于执行特定的几何计算或转换。
八、运算符重载
QSize类支持以下运算符重载:
QSize &operator+=(const QSize &s)
:将当前QSize对象与另一个QSize对象s
相加,结果存储在当前对象中。QSize &operator-=(const QSize &s)
:将当前QSize对象与另一个QSize对象s
相减,结果存储在当前对象中。QSize &operator*=(qreal c)
:将当前QSize对象乘以一个浮点数c
,结果存储在当前对象中。QSize &operator/=(qreal c)
:将当前QSize对象除以一个浮点数c
,结果存储在当前对象中。bool operator==(const QSize &s1, const QSize &s2)
:比较两个QSize对象是否相等。bool operator!=(const QSize &s1, const QSize &s2)
:比较两个QSize对象是否不相等。
此外,QSize类还支持与QPoint类相似的操作符重载,如+
、-
、*
和/
等,用于执行尺寸与点的加减、缩放等操作。
九、详细代码举例
以下是一个使用QSize类的详细代码示例:
#include <QCoreApplication>
#include <QSize>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 构造一个QSize对象QSize size1(100, 200);qDebug() << "Size1: width=" << size1.width() << ", height=" << size1.height();// 设置新的宽度和高度size1.setWidth(150);size1.setHeight(300);qDebug() << "Updated Size1: width=" << size1.width() << ", height=" << size1.height();// 构造另一个QSize对象QSize size2(250, 150);// 使用boundedTo函数获取最小尺寸QSize minSize = size1.boundedTo(size2);qDebug() << "Bounded Size: width=" << minSize.width() << ", height=" << minSize.height();// 使用expandedTo函数获取最大尺寸QSize maxSize = size1.expandedTo(size2);qDebug() << "Expanded Size: width=" << maxSize.width() << ", height=" << maxSize.height();// 使用scaled函数进行缩放QSize scaledSize = size1.scaled(50, 50, Qt::KeepAspectRatio);qDebug() << "Scaled Size: width=" << scaledSize.width() << ", height=" << scaledSize.height();// 交换宽度和高度QSize transposedSize = size1.transposed();qDebug() << "Transposed Size: width=" << transposedSize.width() << ", height=" << transposedSize.height();return a.exec();
}
在这个示例中,我们创建了两个QSize对象size1
和size2
,并使用了width()
、height()
、setWidth()
、setHeight()
、boundedTo()
、expandedTo()
、scaled()
和transposed()
等成员函数来操作它们。最后,我们使用qDebug()
函数输出了各个尺寸的值。