当前位置: 首页 > news >正文

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类尺寸QSizeF)

QSizeF 类(浮点尺寸类)

文章目录

        • QSizeF 类(浮点尺寸类)
          • 概述
          • 主要方法列表
          • 详细说明及应用举例
          • 注意事项

概述

QSizeF 类使用浮点精度定义二维对象的尺寸。官方文档在这里。

主要方法列表
__init__(self)                                   # 构造无效尺寸
__init__(self, sz: QSize)                        # 从QSize构造
__init__(self, w: float, h: float)               # 指定宽高构造
boundedTo(self, otherSize: QSizeF) -> QSizeF      # 取最小尺寸
expandedTo(self, otherSize: QSizeF) -> QSizeF     # 取最大尺寸
grownBy(self, margins: QMarginsF) -> QSizeF       # 增加边距
shrunkBy(self, margins: QMarginsF) -> QSizeF       # 减少边距
height(self) -> float                            # 获取高度
isEmpty(self) -> bool                            # 判断是否为空
isNull(self) -> bool                             # 判断是否为零尺寸
isValid(self) -> bool                            # 判断是否有效
scale(self, s: QSizeF, mode: Qt.AspectRatioMode)  # 按比例缩放
toSize(self) -> QSize                             # 转为整数尺寸
transposed(self) -> QSizeF                       # 交换宽高
width(self) -> float                             # 获取宽度
详细说明及应用举例

QSizeFwidth()height()定义尺寸,支持算数运算和缩放操作。有效尺寸要求宽高均≥0,空尺寸指宽高任一≤0,零尺寸指宽高均为0。

  • 构造函数示例
size1 = QSizeF()                 # 创建无效尺寸 (width=-1, height=-1)
size2 = QSizeF(QSize(100, 50))   # 从QSize转换 (100.0, 50.0)
size3 = QSizeF(150.5, 75.3)      # 直接指定浮点尺寸
  • 常用方法示例

1. boundedTo() - 取最小尺寸

size_a = QSizeF(200.0, 300.0)
size_b = QSizeF(150.0, 400.0)
result = size_a.boundedTo(size_b)  # 结果 (150.0, 300.0)

2. expandedTo() - 取最大尺寸

size_a = QSizeF(200.0, 300.0)
size_b = QSizeF(250.0, 250.0)
result = size_a.expandedTo(size_b)  # 结果 (250.0, 300.0)

3. grownBy() - 增加边距

size = QSizeF(100.0, 50.0)
margins = QMarginsF(10.0, 5.0, 10.0, 5.0)
result = size.grownBy(margins)      # 结果 (120.0, 60.0)

4. scale() - 比例缩放

size = QSizeF(100.0, 50.0)# 模式1:忽略宽高比
size.scale(200.0, 200.0, Qt.IgnoreAspectRatio)  # 结果 (200.0, 200.0)# 模式2:保持宽高比(适应目标区域)
size = QSizeF(100.0, 50.0)
size.scale(200.0, 100.0, Qt.KeepAspectRatio)     # 结果 (200.0, 100.0)# 模式3:保持宽高比(扩展至目标区域)
size = QSizeF(100.0, 50.0)
size.scale(200.0, 200.0, Qt.KeepAspectRatioByExpanding)  # 结果 (400.0, 200.0)

5. transposed() - 交换宽高

size = QSizeF(100.0, 50.0)
transposed_size = size.transposed()  # 结果 (50.0, 100.0)

6. shrunkBy() - 缩小边距

size = QSizeF(100.0, 50.0)
margins = QMarginsF(10.0, 5.0, 10.0, 5.0)
result = size.shrunkBy(margins)      # 结果 (80.0, 40.0)

7. 运算符重载

# 加法
size1 = QSizeF(100.0, 50.0)
size2 = QSizeF(20.5, 30.5)
result = size1 + size2  # (120.5, 80.5)# 乘法
size = QSizeF(100.0, 50.0)
result = size * 1.5     # (150.0, 75.0)
注意事项

• 使用isValid()验证尺寸有效性:size.isValid()

toSize()会进行四舍五入:QSizeF(100.6, 50.3).toSize()QSize(101, 50)

相关文章:

  • Java发生OOM是否必然导致JVM退出
  • 【工具变量】A股上市企业数据资产披露水平数据集(2000-2023年)
  • 8.QT-按钮类控件|Push Button|Radio Button|Check Box|Tool Button(C++)
  • 提交bug单时,应该说明哪些信息?
  • 强制重装及验证onnxruntime-gpu是否正确工作
  • 借助 OpenCV 和 PyTorch 库,利用卷积神经网络提取图像边缘特征
  • C++项目 —— 基于多设计模式下的同步异步日志系统(4)(双缓冲区异步任务处理器(AsyncLooper)设计)
  • HTTP 2.0 和 3.0 的区别
  • DSN主从同步
  • Linux系统中iptables防火墙
  • 松灵Cobot Magic双臂具身遥操机器人(基于ROS的定位建图与协同导航技术)
  • DeepSeek 即将联合 vLLM 开源推理引擎
  • AI-Sphere-Butler之如何使用Llama factory LoRA微调Qwen2-1.5B/3B专属管家大模型
  • C++ 俄罗斯方块 | Tetris⚡YQW · Studio ⚡【无需下载图片】
  • 铅酸电池充电器方案EG1253+EG4321
  • JVM 学习
  • Spring Boot 版本与对应 JDK 版本兼容性
  • 雨滴传感器详解(STM32)
  • Sharding-JDBC 系列专题 - 第二篇:广播表(Broadcast Tables)
  • VuePress 使用教程:从入门到精通
  • 外交部:中方在黄海暂定海域建造渔业养殖设施,同中韩海域划界无关
  • 张文宏团队公布广谱抗猴痘药物研发进展,将进入临床审批阶段
  • 大家聊中国式现代化|彭羽:为国家试制度探新路,推进高水平对外开放
  • 何以中国|福建武夷山:千年茶道的文旅“破圈”与新生
  • 金湘军辞去山西省省长职务
  • 中华人民共和国和阿塞拜疆共和国关于建立全面战略伙伴关系的联合声明