本页内容

QSizeF Class

QSizeF 类使用浮点精度定义二维对象的大小。更多内容...

头文件: #include <QSizeF>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

公共函数

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 对象既可以进行流式传输,也可以进行比较。

另请参阅 QSize 、QPointF 和QRectF 。

成员函数文档

[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 的最大宽度和高度的尺寸。

另请参阅 boundedTo()和scale()。

[static noexcept] QSizeF QSizeF::fromCGSize(CGSize size)

根据size 创建QSizeF 。

另请参阅 toCGSize()。

[constexpr noexcept] QSizeF QSizeF::grownBy(QMarginsF margins) const

返回将当前大小按margins 进行扩展后得到的大小。

另请参阅 shrunkBy()。

[constexpr noexcept] qreal QSizeF::height() const

返回高度。

另请参阅 width() 和setHeight()。

[constexpr noexcept] bool QSizeF::isEmpty() const

如果宽度和高度中任一值小于或等于 0,则返回true ;否则返回false 。

另请参阅 isNull() 和isValid()。

[noexcept] bool QSizeF::isNull() const

如果宽度和高度均为 0.0(不考虑正负号),则返回true ;否则返回false 。

另请参阅 isValid() 和isEmpty()。

[constexpr noexcept] bool QSizeF::isValid() const

如果宽度和高度均大于或等于 0,则返回true ;否则返回false 。

另请参阅 isNull() 和isEmpty()。

[constexpr noexcept] qreal &QSizeF::rheight()

返回对高度的引用。

使用引用可以直接对高度进行操作。例如:

QSizeF size(100, 10.2);
size.rheight() += 5.5;

// size becomes (100,15.7)

另请参阅 rwidth() 和setHeight()。

[constexpr noexcept] qreal &QSizeF::rwidth()

返回对宽度的引用。

使用引用可以直接对宽度进行操作。例如:

QSizeF size(100.3, 10);
size.rwidth() += 20.5;

// size becomes (120.8,10)

另请参阅 rheight() 和setWidth()。

[noexcept] void QSizeF::scale(qreal width, qreal height, Qt::AspectRatioMode mode)

根据指定的mode ,将尺寸缩放为一个矩形,其width 和height 分别为给定值。

  • 如果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

根据指定的mode ,返回一个按给定的width 和height 缩放为矩形大小的图像。

另请参阅 scale()。

[noexcept] QSizeF QSizeF::scaled(const QSizeF &s, Qt::AspectRatioMode mode) const

返回一个按给定尺寸s 缩放的矩形,缩放比例由指定的mode 决定。

这是一个重载函数。

[constexpr noexcept] void QSizeF::setHeight(qreal height)

将高度设置为给定的有限值height 。

另请参阅 height()、rheight() 和setWidth()。

[constexpr noexcept] void QSizeF::setWidth(qreal width)

将宽度设置为给定的有限值width 。

另请参阅 width()、rwidth() 和setHeight()。

[constexpr noexcept] QSizeF QSizeF::shrunkBy(QMarginsF margins) const

返回将该大小缩小margins 后得到的大小。

另请参阅 grownBy()。

[noexcept] CGSize QSizeF::toCGSize() const

根据QSizeF 创建一个CGSize。

另请参阅 fromCGSize()。

[constexpr noexcept] QSize QSizeF::toSize() const

返回该大小的基于整数的副本。

请注意,返回的 `size` 中的坐标将四舍五入到最接近的整数。

另请参阅 QSizeF() 和QSize::toSizeF()。

[noexcept] void QSizeF::transpose()

交换宽度和高度的值。

另请参阅 setWidth()、setHeight() 和transposed()。

[constexpr noexcept] QSizeF QSizeF::transposed() const

返回宽度和高度值互换后的尺寸。

另请参阅 transpose()。

[constexpr noexcept] qreal QSizeF::width() const

返回宽度。

另请参阅 height() 和setWidth()。

[constexpr noexcept] QSizeF &QSizeF::operator*=(qreal factor)

将宽度和高度都乘以给定的有限值factor ,并返回该大小的引用。

另请参阅 scale()。

[constexpr noexcept] QSizeF &QSizeF::operator+=(const QSizeF &size)

将给定的size 添加到该大小中,并返回该大小的引用。例如:

QSizeF s( 3, 7);
QSizeF r(-1, 4);
s += r;

// s becomes (2,11)

[constexpr noexcept] QSizeF &QSizeF::operator-=(const QSizeF &size)

从该大小中减去给定的size ,并返回该大小的引用。例如:

QSizeF s( 3, 7);
QSizeF r(-1, 4);
s -= r;

// s becomes (4,3)

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)

返回s2 减去s1 的结果;每个分量分别进行减法运算。

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 数据类型的序列化》。

© 2026 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.