本页内容

QSize Class

QSize 类使用整数点精度来定义二维对象的大小。更多内容...

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

公共函数

QSize()
QSize(int width, int height)
QSize boundedTo(const QSize &otherSize) const
QSize expandedTo(const QSize &otherSize) const
QSize grownBy(QMargins margins) const
int height() const
bool isEmpty() const
bool isNull() const
bool isValid() const
int &rheight()
int &rwidth()
void scale(int width, int height, Qt::AspectRatioMode mode)
void scale(const QSize &size, Qt::AspectRatioMode mode)
QSize scaled(int width, int height, Qt::AspectRatioMode mode) const
QSize scaled(const QSize &s, Qt::AspectRatioMode mode) const
void setHeight(int height)
void setWidth(int width)
QSize shrunkBy(QMargins margins) const
CGSize toCGSize() const
(since 6.4) QSizeF toSizeF() const
void transpose()
QSize transposed() const
int width() const
QSize &operator*=(qreal factor)
QSize &operator+=(const QSize &size)
QSize &operator-=(const QSize &size)
QSize &operator/=(qreal divisor)
bool operator!=(const QSize &lhs, const QSize &rhs)
QSize operator*(const QSize &size, qreal factor)
QSize operator*(qreal factor, const QSize &size)
QSize operator+(const QSize &s1, const QSize &s2)
QSize operator-(const QSize &s1, const QSize &s2)
QSize operator/(const QSize &size, qreal divisor)
QDataStream &operator<<(QDataStream &stream, const QSize &size)
bool operator==(const QSize &lhs, const QSize &rhs)
QDataStream &operator>>(QDataStream &stream, QSize &size)

详细说明

大小由width()和height()指定。它可以在构造函数中设置,并使用setWidth()、setHeight()或scale()函数,或者使用算术运算符进行更改。还可以通过使用rwidth()和rheight()函数检索宽度和高度的引用来直接操作大小。 最后,可以使用transpose() 函数交换宽度和高度。

isValid() 函数用于判断一个尺寸是否有效(有效的尺寸其宽度和高度均大于或等于零)。isEmpty() 函数在宽度和高度中任一值小于或等于零时返回true ,而isNull() 函数仅当宽度和高度均为零时才返回true 。

使用 `expandedTo()` 函数可获取一个 `size` 对象,其中包含本对象与给定对象的最大高度和宽度。同样地,`boundedTo()` 函数返回的 `size` 对象包含本对象与给定对象的最小高度和宽度。

QSize 对象既可以进行流式传输,也可以进行比较。

另请参阅 QSizeF 、QPoint 和QRect 。

成员函数文档

[constexpr noexcept] QSize::QSize()

构建了一个宽度和高度无效的大小(即,isValid() 返回false )。

另请参见 isValid()。

[constexpr noexcept] QSize::QSize(int width, int height)

根据给定的width 和height 构建一个size。

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

[constexpr noexcept] QSize QSize::boundedTo(const QSize &otherSize) const

返回一个包含此大小以及给定otherSize 的最小宽度和高度的大小。

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

[constexpr noexcept] QSize QSize::expandedTo(const QSize &otherSize) const

返回一个包含该大小以及给定otherSize 的最大宽度和高度的尺寸对象。

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

[constexpr noexcept] QSize QSize::grownBy(QMargins margins) const

返回将当前大小按margins 倍扩展后所得的大小。

另请参阅 shrunkBy()。

[constexpr noexcept] int QSize::height() const

返回高度。

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

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

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

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

[constexpr noexcept] bool QSize::isNull() const

如果宽度和高度均为 0,则返回true ;否则返回 false。

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

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

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

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

[constexpr noexcept] int &QSize::rheight()

返回对高度的引用。

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

QSize size(100, 10);
size.rheight() += 5;

// size becomes (100,15)

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

[constexpr noexcept] int &QSize::rwidth()

返回对宽度的引用。

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

QSize size(100, 10);
size.rwidth() += 20;

// size becomes (120,10)

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

[noexcept] void QSize::scale(int width, int height, Qt::AspectRatioMode mode)

根据指定的mode ,将尺寸缩放为具有给定width 和height 的矩形:

  • 如果mode 等于Qt::IgnoreAspectRatio ,则将尺寸设置为 (width,height)。
  • 如果 `mode ` 为 `Qt::KeepAspectRatio`,则将当前大小缩放为在 `(width,height)` 范围内尽可能大的矩形,同时保持宽高比。
  • 如果 `mode ` 为 `Qt::KeepAspectRatioByExpanding`,则将当前尺寸缩放为尽可能小且位于 (width,height) 范围之外的矩形,同时保持宽高比。

示例:

QSize t1(10, 12);
t1.scale(60, 60, Qt::IgnoreAspectRatio);
// t1 is (60, 60)

QSize t2(10, 12);
t2.scale(60, 60, Qt::KeepAspectRatio);
// t2 is (50, 60)

QSize t3(10, 12);
t3.scale(60, 60, Qt::KeepAspectRatioByExpanding);
// t3 is (60, 72)

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

[noexcept] void QSize::scale(const QSize &size, Qt::AspectRatioMode mode)

根据指定的mode ,将图像缩放为具有给定size 的矩形。

这是一个重载函数。

[noexcept] QSize QSize::scaled(int width, int height, Qt::AspectRatioMode mode) const

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

另请参阅 scale()。

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

根据指定的mode ,返回一个按给定尺寸s 缩放后的矩形。

这是一个重载函数。

[constexpr noexcept] void QSize::setHeight(int height)

将高度设置为给定的height 。

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

[constexpr noexcept] void QSize::setWidth(int width)

将宽度设置为指定的width 。

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

[constexpr noexcept] QSize QSize::shrunkBy(QMargins margins) const

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

另请参阅 grownBy()。

[noexcept] CGSize QSize::toCGSize() const

根据QSize 创建一个CGSize。

另请参阅 QSizeF::fromCGSize()。

[constexpr noexcept, since 6.4] QSizeF QSize::toSizeF() const

将该大小作为具有浮点精度的数值返回。

该函数在 Qt 6.4 中引入。

另请参阅 QSizeF::toSize()。

[noexcept] void QSize::transpose()

交换宽度和高度的数值。

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

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

返回一个宽高位置互换的QSize 。

另请参阅 transpose()。

[constexpr noexcept] int QSize::width() const

返回宽度。

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

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

将宽度和高度都乘以给定的factor ,并返回该尺寸的引用。

请注意,结果会四舍五入到最接近的整数。

另请参阅 scale()。

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

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

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

// s becomes (2,11)

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

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

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

// s becomes (4,3)

QSize &QSize::operator/=(qreal divisor)

将宽度和高度分别除以给定的divisor ,并返回该尺寸的引用。

请注意,结果将四舍五入到最接近的整数。

另请参阅 QSize::scale()。

相关的非成员函数

[constexpr noexcept] bool operator!=(const QSize &lhs, const QSize &rhs)

如果 `lhs ` 和 `rhs ` 不同,则返回 `true `;否则返回 `false`。

[constexpr noexcept] QSize operator*(const QSize &size, qreal factor)

将给定的size 与给定的factor 相乘,并返回四舍五入到最接近整数的计算结果。

另请参阅 QSize::scale()。

[constexpr noexcept] QSize operator*(qreal factor, const QSize &size)

将给定的size 与给定的factor 相乘,并返回四舍五入到最接近整数的计算结果。

这是一个重载函数。

[constexpr noexcept] QSize operator+(const QSize &s1, const QSize &s2)

返回s1 和s2 的和;每个分量分别相加。

[constexpr noexcept] QSize operator-(const QSize &s1, const QSize &s2)

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

QSize operator/(const QSize &size, qreal divisor)

将给定的size 除以给定的divisor ,并返回四舍五入到最接近整数的计算结果。

另请参阅 QSize::scale()。

QDataStream &operator<<(QDataStream &stream, const QSize &size)

将给定的size 写入给定的stream ,并返回该流的引用。

另请参阅 《Qt 数据类型的序列化》。

[constexpr noexcept] bool operator==(const QSize &lhs, const QSize &rhs)

如果 `lhs ` 和 `rhs ` 相等,则返回 `true `;否则返回 `false`。

QDataStream &operator>>(QDataStream &stream, QSize &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.