「QT」几何数据类 之 QSize 尺寸类

ops/2024/11/14 19:21:10/

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「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类提供了两个构造函数:

  1. QSize():构造一个非法的QSize对象,其宽度和高度均被设置为无效值(通常是-1)。
  2. 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对象size1size2,并使用了width()height()setWidth()setHeight()boundedTo()expandedTo()scaled()transposed()等成员函数来操作它们。最后,我们使用qDebug()函数输出了各个尺寸的值。


在这里插入图片描述


http://www.ppmy.cn/ops/133657.html

相关文章

提取神经网络数学表达式

来自《老饼讲解神经网络》 www..bbbdata.com 当我们在matlab训练好网络后&#xff0c;可以使用神经网络工具箱的sim(net,x)函数进行预测输出。但往往想提取出它的数学表达式&#xff0c;该怎么提取呢&#xff1f; 下面以《一个简单的神经网络例子》中的模型为例&#xff0c;提取…

《Java编程思想》第三章习题答案

练习1&#xff1a;&#xff08;1&#xff09;使用“简短的”和正常的打印语句来编写一个程序。 答案&#xff1a;这里使用“简短的”打印语句需要导thinking in Java作者个人写的包。笔者没有找到资源&#xff0c;就忽略这一步。 package thinkinginjava.chapterthree;public…

动态规划 —— dp 问题-买卖股票的最佳时机III

1. 买卖股票的最佳时机III 题目链接&#xff1a; 123. 买卖股票的最佳时机 III - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/description/ 2. 题目解析 3. 算法原理 状态表示&#xff1a;以某一个位置为结尾或者…

目前区块链服务商备案支持的区块链技术类型

status"success"data1-name"比特币/Bitcoin/BTC"3-name"以太坊/Ethereum/ETH"875-name"超级账本/Hyperledger"5-name"柚子/EOS/EOS"6-name"恒星链/Stellar/XLM"1055-name"Quorum"7-name"莱特币/Li…

如何在Puppeteer中实现表单自动填写与提交:问卷调查

一、介绍 在现代市场研究中&#xff0c;问卷调查是一种重要的工具。企业通过在线问卷调查了解消费者对产品或服务的需求、偏好和满意度&#xff0c;从而为产品开发、市场营销和服务优化提供指导。然而&#xff0c;对于爬虫技术专家来说&#xff0c;批量自动化地填写和提交问卷…

OCRSpace申请free api流程

0.OCRSpace概述 OCR.Space是一款功能强大的在线光学字符识别&#xff08;OCR&#xff09;工具。 格式与语言支持广泛&#xff1a;支持多种图片格式&#xff0c;如 JPG、PNG、GIF、PDF 等作为输入。在语言方面&#xff0c;它支持英语、中文、法语、德语等20多种语言的文字识别…

SQL 外连接

1 外连接 外连接是一种用于结合两个或多个表的方式&#xff0c;返回至少一个表中的所有记录。 左外连接 LEFT JOIN&#xff0c;左表为驱动表&#xff0c;右表为从表。返回驱动表的所有记录以及从表中的匹配记录。如果从表没有匹配&#xff0c;则结果中从表的部分为NULL。 右…

机器学习(1)线性回归

前言   线性回归算法是机器学习深度学习入门的必学的算法&#xff0c;其算法原理虽然简单&#xff0c;但是却蕴含着机器学习中的一些重要的基本思想。许多功能更为强大的非线性模型可在线性模型的基础上通过引入层级结构或高维映射而得。同时机器学习深度学习的核心思想就是优…