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 # 获取宽度
详细说明及应用举例
QSizeF
用width()
和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)