QSizeF Class
QSizeF 类使用浮点精度定义二维对象的大小。更多
头文件: | #include <QSizeF> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 所有成员(包括继承成员)的列表
- QSizeF 属于绘画类。
公共函数
QSizeF() | |
QSizeF(const QSize &size) | |
QSizeF(qreal width, qreal height) | |
QSizeF | boundedTo(const QSizeF &otherSize) const |
QSizeF | expandedTo(const QSizeF &otherSize) const |
QSizeF | grownBy(QMarginsF margins) const |
qreal | height() const |
bool | isEmpty() const |
bool | isNull() const |
bool | isValid() const |
qreal & | rheight() |
qreal & | rwidth() |
void | scale(qreal width, qreal height, Qt::AspectRatioMode mode) |
void | scale(const QSizeF &size, Qt::AspectRatioMode mode) |
QSizeF | scaled(qreal width, qreal height, Qt::AspectRatioMode mode) const |
QSizeF | scaled(const QSizeF &s, Qt::AspectRatioMode mode) const |
void | setHeight(qreal height) |
void | setWidth(qreal width) |
QSizeF | shrunkBy(QMarginsF margins) const |
CGSize | toCGSize() const |
QSize | toSize() const |
void | transpose() |
QSizeF | transposed() const |
qreal | width() const |
QSizeF & | operator*=(qreal factor) |
QSizeF & | operator+=(const QSizeF &size) |
QSizeF & | operator-=(const QSizeF &size) |
QSizeF & | operator/=(qreal divisor) |
静态公共成员
QSizeF | fromCGSize(CGSize size) |
相关非成员
(since 6.8) bool | qFuzzyCompare(const QSizeF &lhs, const QSizeF &rhs) |
(since 6.8) bool | qFuzzyIsNull(const QSizeF &size) |
bool | operator!=(const QSizeF &lhs, const QSizeF &rhs) |
QSizeF | operator*(const QSizeF &size, qreal factor) |
QSizeF | operator*(qreal factor, const QSizeF &size) |
QSizeF | operator+(const QSizeF &s1, const QSizeF &s2) |
QSizeF | operator-(const QSizeF &s1, const QSizeF &s2) |
QSizeF | operator/(const QSizeF &size, qreal divisor) |
QDataStream & | operator<<(QDataStream &stream, const QSizeF &size) |
bool | operator==(const QSizeF &lhs, const QSizeF &rhs) |
QDataStream & | operator>>(QDataStream &stream, QSizeF &size) |
详细说明
尺寸由width() 和height() 指定。它可以在构造函数中设置,也可以使用setWidth(),setHeight(), 或scale() 函数或算术运算符更改。使用rwidth() 和rheight() 函数检索宽度和高度的引用,也可以直接操作大小。最后,可以使用transpose() 函数交换宽度和高度。
isValid() 函数用于确定尺寸是否有效。有效尺寸的宽度和高度均大于或等于零。如果宽度和高度均小于(或等于)零,则isEmpty() 函数返回true
,而isNull() 函数仅在宽度和高度均为零时返回true
。
使用expandedTo() 函数可以获取一个尺寸,该尺寸包含此尺寸和给定尺寸的最大高度和宽度。同样,函数boundedTo() 返回的尺寸是该尺寸和给定尺寸的最小高度和宽度。
QSizeF 类还提供了toSize() 函数,通过将宽度和高度舍入为最接近的整数,返回该尺寸的QSize 副本。
QSizeF 对象可以流式传输,也可以比较。
成员函数文档
[constexpr noexcept]
QSizeF QSizeF::grownBy(QMarginsF margins) const
返回此大小增长margins 后的大小。
另请参阅 shrunkBy() 。
[constexpr noexcept]
QSizeF QSizeF::shrunkBy(QMarginsF margins) const
返回将此大小缩小margins 后的大小。
另请参阅 grownBy() 。
[constexpr noexcept]
QSizeF::QSizeF()
构造无效的大小。
另请参阅 isValid().
[constexpr noexcept]
QSizeF::QSizeF(const QSize &size)
根据给定的size 构造一个浮点精度的大小。
另请参阅 toSize() 和QSize::toSizeF() 。
[constexpr noexcept]
QSizeF::QSizeF(qreal width, qreal height)
用给定的有限width 和height 构造大小。
[constexpr noexcept]
QSizeF QSizeF::boundedTo(const QSizeF &otherSize) const
返回一个尺寸,其中包含此尺寸和给定otherSize 的最小宽度和高度。
另请参阅 expandedTo() 和scale()。
[constexpr noexcept]
QSizeF QSizeF::expandedTo(const QSizeF &otherSize) const
返回一个尺寸,其中包含此尺寸和给定otherSize 的最大宽度和高度。
[static noexcept]
QSizeF QSizeF::fromCGSize(CGSize size)
从size 创建QSizeF 。
另请参见 toCGSize() 。
[constexpr noexcept]
qreal QSizeF::height() const
返回高度。
[constexpr noexcept]
bool QSizeF::isEmpty() const
如果宽度和高度小于或等于 0,则返回true
;否则返回false
。
[noexcept]
bool QSizeF::isNull() const
如果宽度和高度均为 0.0,则返回true
(忽略符号);否则返回false
。
[constexpr noexcept]
bool QSizeF::isValid() const
如果宽度和高度都等于或大于 0,则返回true
;否则返回false
。
[constexpr noexcept]
qreal &QSizeF::rheight()
返回高度的引用。
使用引用可以直接操作高度。例如
QSizeF size(100, 10.2); size.rheight() += 5.5; // size becomes (100,15.7)
[constexpr noexcept]
qreal &QSizeF::rwidth()
返回宽度的引用。
使用引用可以直接操作宽度。例如
QSizeF size(100.3, 10); size.rwidth() += 20.5; // size becomes (120.8,10)
[noexcept]
void QSizeF::scale(qreal width, qreal height, Qt::AspectRatioMode mode)
根据给定的width 和height ,按照指定的mode ,将大小缩放为一个矩形。
- 如果mode 是Qt::IgnoreAspectRatio ,则大小设置为 (width,height)。
- 如果mode 是Qt::KeepAspectRatio ,当前大小将缩放为 (width,height) 内尽可能大的矩形,并保留长宽比。
- 如果mode 是Qt::KeepAspectRatioByExpanding ,则当前大小将被缩放到 (width,height) 外尽可能小的矩形内,并保持长宽比。
举例说明:
QSizeF t1(10, 12); t1.scale(60, 60, Qt::IgnoreAspectRatio); // t1 is (60, 60) QSizeF t2(10, 12); t2.scale(60, 60, Qt::KeepAspectRatio); // t2 is (50, 60) QSizeF t3(10, 12); t3.scale(60, 60, Qt::KeepAspectRatioByExpanding); // t3 is (60, 72)
另请参阅 setWidth(),setHeight() 和scaled().
[noexcept]
void QSizeF::scale(const QSizeF &size, Qt::AspectRatioMode mode)
这是一个重载函数。
根据指定的mode ,以给定的size 为矩形缩放尺寸。
[noexcept]
QSizeF QSizeF::scaled(qreal width, qreal height, Qt::AspectRatioMode mode) const
根据指定的width 和height ,返回按比例缩放的矩形尺寸,mode 。
另请参见 scale()。
[noexcept]
QSizeF QSizeF::scaled(const QSizeF &s, Qt::AspectRatioMode mode) const
这是一个重载函数。
根据指定的mode ,返回按比例缩放为矩形的尺寸s 。
[constexpr noexcept]
void QSizeF::setHeight(qreal height)
将高度设置为给定的有限height 。
另请参见 height()、rheight() 和setWidth()。
[constexpr noexcept]
void QSizeF::setWidth(qreal width)
将宽度设置为给定的有限width 。
另请参见 width()、rwidth() 和setHeight()。
[noexcept]
CGSize QSizeF::toCGSize() const
从QSizeF 创建 CGSize。
另请参见 fromCGSize().
[constexpr noexcept]
QSize QSizeF::toSize() const
返回该尺寸的整数副本。
请注意,返回的大小中的坐标将四舍五入为最接近的整数。
另请参阅 QSizeF() 和QSize::toSizeF()。
[noexcept]
void QSizeF::transpose()
交换宽度和高度值。
另请参见 setWidth()、setHeight() 和transposed()。
[constexpr noexcept]
QSizeF QSizeF::transposed() const
返回宽度和高度值对调后的尺寸。
另请参见 transpose()。
[constexpr noexcept]
qreal QSizeF::width() const
返回宽度。
[constexpr noexcept]
QSizeF &QSizeF::operator*=(qreal factor)
这是一个重载函数。
将宽度和高度乘以给定的有限factor ,并返回对大小的引用。
另请参见 scale()。
[constexpr noexcept]
QSizeF &QSizeF::operator+=(const QSizeF &size)
将给定的size 添加到此大小,并返回此大小的引用。例如
[constexpr noexcept]
QSizeF &QSizeF::operator-=(const QSizeF &size)
从此大小减去给定的size ,并返回此大小的引用。例如
QSizeF &QSizeF::operator/=(qreal divisor)
这是一个重载函数。
将宽度和高度除以给定的divisor ,并返回一个尺寸引用。divisor 不能为零或 NaN。
另请参阅 scale()。
相关非成员
[constexpr noexcept, since 6.8]
bool qFuzzyCompare(const QSizeF &lhs, const QSizeF &rhs)
如果lhs 的大小近似等于rhs 的大小,则返回true
;否则返回false
。
如果大小的宽度和高度近似相等,则视为近似相等。
此函数在 Qt 6.8 中引入。
[constexpr noexcept, since 6.8]
bool qFuzzyIsNull(const QSizeF &size)
如果尺寸size 的宽度和高度都近似等于零,则返回true
。
此函数在 Qt 6.8 中引入。
[constexpr noexcept]
bool operator!=(const QSizeF &lhs, const QSizeF &rhs)
如果lhs 和rhs 足够不同,则返回true
;否则返回false
。
警告: 此函数不检查严格不等式;而是使用模糊比较来比较大小的外延。
[constexpr noexcept]
QSizeF operator*(const QSizeF &size, qreal factor)
这是一个重载函数。
将给定的size 与给定的有限factor 相乘,并返回结果。
另请参见 QSizeF::scale().
[constexpr noexcept]
QSizeF operator*(qreal factor, const QSizeF &size)
这是一个重载函数。
将给定的size 与给定的有限factor 相乘,并返回结果。
[constexpr noexcept]
QSizeF operator+(const QSizeF &s1, const QSizeF &s2)
返回s1 和s2 的总和;每个部分分别相加。
[constexpr noexcept]
QSizeF operator-(const QSizeF &s1, const QSizeF &s2)
Returnss2 subtracted froms1; each component is subtracted separately.
QSizeF operator/(const QSizeF &size, qreal divisor)
这是一个重载函数。
将给定的size 除以给定的divisor 并返回结果。divisor 不能为零或 NaN。
另请参见 QSizeF::scale()。
QDataStream &operator<<(QDataStream &stream, const QSizeF &size)
将给定的size 写入给定的stream ,并返回对该数据流的引用。
另请参阅 序列化 Qt 数据类型。
[constexpr noexcept]
bool operator==(const QSizeF &lhs, const QSizeF &rhs)
如果lhs 和rhs 大致相等,则返回true
;否则返回 false。
警告: 此函数不检查严格的相等性,而是使用模糊比较来比较大小的外延。
另请参阅 qFuzzyCompare 。
QDataStream &operator>>(QDataStream &stream, QSizeF &size)
将大小从给定的stream 读入给定的size ,并返回对该数据流的引用。
另请参阅 序列化 Qt 数据类型。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.