本页内容

QPoint Class

QPoint 类使用整数精度定义平面上的一个点。更多内容...

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

注意:该类中的所有函数均为可重入函数。

QPoint 比较

类别可比较类型
相等性QPoint
相等性QPointF.

公共函数

QPoint()
QPoint(int xpos, int ypos)
bool isNull() const
int manhattanLength() const
int &rx()
int &ry()
void setX(int x)
void setY(int y)
CGPoint toCGPoint() const
(since 6.4) QPointF toPointF() const
QPoint transposed() const
int x() const
int y() const
QPoint &operator*=(double factor)
QPoint &operator*=(float factor)
QPoint &operator*=(int factor)
QPoint &operator+=(const QPoint &point)
QPoint &operator-=(const QPoint &point)
QPoint &operator/=(qreal divisor)

静态公共成员

int dotProduct(const QPoint &p1, const QPoint &p2)
bool operator!=(const QPoint &lhs, const QPoint &rhs)
QPoint operator*(const QPoint &point, double factor)
QPoint operator*(const QPoint &point, float factor)
QPoint operator*(const QPoint &point, int factor)
QPoint operator*(double factor, const QPoint &point)
QPoint operator*(float factor, const QPoint &point)
QPoint operator*(int factor, const QPoint &point)
QPoint operator+(const QPoint &point)
QPoint operator+(const QPoint &p1, const QPoint &p2)
QPoint operator-(const QPoint &p1, const QPoint &p2)
QPoint operator-(const QPoint &point)
QPoint operator/(const QPoint &point, qreal divisor)
QDataStream &operator<<(QDataStream &stream, const QPoint &point)
bool operator==(const QPoint &lhs, const QPoint &rhs)
QDataStream &operator>>(QDataStream &stream, QPoint &point)

详细说明

一个点由 x 坐标和 y 坐标指定,可通过函数x() 和y() 访问这些坐标。 如果 x 和 y 都设置为 0,则isNull() 函数将返回true 。可以使用setX() 和setY() 函数设置(或更改)坐标,或者使用rx() 和ry() 函数,这些函数返回对坐标的引用(允许直接操作)。

对于给定点p,以下语句均等价:

QPoint p;

p.setX(p.x() + 1);
p += QPoint(1, 0);
p.rx()++;

QPoint 对象也可用作向量:加法和减法的定义与向量相同(每个分量分别相加)。QPoint 对象还可以被int 或qreal 除以或相乘。

此外,QPoint类还提供了manhattanLength()函数,该函数可对作为向量解释的QPoint对象的长度进行低开销的近似计算。最后,QPoint对象既可以进行流式传输,也可以进行比较。

另请参阅 QPointF 和QPolygon 。

成员函数文档

[constexpr noexcept] QPoint::QPoint()

构造原点,即坐标为 (0, 0) 的点

另请参阅 isNull()。

[constexpr noexcept] QPoint::QPoint(int xpos, int ypos)

根据给定的坐标(xpos ,ypos )构造一个点。

另请参阅 setX() 和setY()。

[static constexpr] int QPoint::dotProduct(const QPoint &p1, const QPoint &p2)

QPoint p( 3, 7);
QPoint q(-1, 4);
int dotProduct = QPoint::dotProduct(p, q);   // dotProduct becomes 25

返回p1 与p2 的点积。

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

如果 x 和 y 坐标均设为 0,则返回 `true `;否则返回 `false`。

[constexpr] int QPoint::manhattanLength() const

返回x()和y()的绝对值之和,这通常被称为从原点到该点的向量的“曼哈顿距离”。例如:

QPoint oldPosition;

void MyWidget::mouseMoveEvent(QMouseEvent *event)
{
    QPoint point = event->pos() - oldPosition;
    if (point.manhattanLength() > 3){
        // the mouse has moved more than 3 pixels since the oldPosition
    }
}

这是一个实用且计算迅速的真实长度近似值:

double trueLength = std::sqrt(std::pow(x(), 2) + std::pow(y(), 2));

“曼哈顿长度”这一传统名称的由来,是因为此类距离适用于只能在矩形网格上移动的旅行者,例如曼哈顿的街道。

[constexpr noexcept] int &QPoint::rx()

返回此点的 x 坐标的引用。

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

QPoint p(1, 2);
p.rx()--;   // p becomes (0, 2)

另请参阅 x() 和setX()。

[constexpr noexcept] int &QPoint::ry()

返回此点的 y 坐标的引用。

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

QPoint p(1, 2);
p.ry()++;   // p becomes (1, 3)

另请参阅 y() 和setY()。

[constexpr noexcept] void QPoint::setX(int x)

将该点的 x 坐标设置为给定的x 坐标。

另请参阅 x() 和setY()。

[constexpr noexcept] void QPoint::setY(int y)

将该点的 y 坐标设置为给定的y 坐标。

另请参阅 y() 和setX()。

[noexcept] CGPoint QPoint::toCGPoint() const

根据QPoint 创建一个CGPoint。

另请参阅 QPointF::fromCGPoint()。

[constexpr noexcept, since 6.4] QPointF QPoint::toPointF() const

将该点作为具有浮点精度的点返回。

该函数在 Qt 6.4 中引入。

另请参阅 QPointF::toPoint()。

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

返回一个 x 和 y 坐标互换的点:

QPoint{1, 2}.transposed() // {2, 1}

另请参阅 x()、y()、setX() 以及setY()。

[constexpr noexcept] int QPoint::x() const

返回该点的 x 坐标。

另请参阅 setX() 和rx()。

[constexpr noexcept] int QPoint::y() const

返回该点的 y 坐标。

另请参阅 setY() 和ry()。

[constexpr] QPoint &QPoint::operator*=(double factor)

将该点的坐标乘以给定的factor ,并返回该点的引用。例如:

QPoint p(-1, 4);
p *= 2.5;    // p becomes (-3, 10)

请注意,由于坐标以整数形式存储,结果将被四舍五入到最接近的整数。如需浮点精度,请使用QPointF 。

另请参阅 operator/=()。

[constexpr] QPoint &QPoint::operator*=(float factor)

将该点的坐标乘以给定的factor ,并返回该点的引用。

请注意,由于坐标以整数形式存储,结果将四舍五入到最接近的整数。如需浮点精度,请使用QPointF 。

另请参阅 operator/=()。

[constexpr] QPoint &QPoint::operator*=(int factor)

将该点的坐标乘以给定的factor ,并返回该点的引用。

另请参阅 operator/=()。

[constexpr] QPoint &QPoint::operator+=(const QPoint &point)

将给定的point 添加到该点,并返回该点的引用。例如:

QPoint p( 3, 7);
QPoint q(-1, 4);
p += q;    // p becomes (2, 11)

另请参阅 operator-=()。

[constexpr] QPoint &QPoint::operator-=(const QPoint &point)

从该点中减去给定的point ,并返回该点的引用。例如:

QPoint p( 3, 7);
QPoint q(-1, 4);
p -= q;    // p becomes (4, 3)

另请参阅 operator+=()。

[constexpr] QPoint &QPoint::operator/=(qreal divisor)

将 x 和 y 均除以给定的divisor ,并返回该点的引用。例如:

QPoint p(-3, 10);
p /= 2.5;           // p becomes (-1, 4)

请注意,由于坐标以整数形式存储,结果将被四舍五入到最接近的整数。如需浮点精度,请使用QPointF 。

另请参阅 operator*=()。

相关非成员

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

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

[constexpr] QPoint operator*(const QPoint &point, double factor)

返回给定point 与factor 相乘后的结果。

请注意,由于点数据以整数形式存储,因此结果将被四舍五入到最接近的整数。如需浮点精度,请使用QPointF 。

另请参阅 QPoint::operator*=()。

[constexpr] QPoint operator*(const QPoint &point, float factor)

返回给定point 与factor 相乘后的结果。

请注意,由于点数据以整数形式存储,因此结果将四舍五入到最接近的整数。如需浮点精度,请使用QPointF 。

另请参阅 QPoint::operator*=()。

[constexpr noexcept] QPoint operator*(const QPoint &point, int factor)

返回给定point 与给定factor 相乘后的结果的副本。

另请参阅 QPoint::operator*=()。

[constexpr] QPoint operator*(double factor, const QPoint &point)

返回给定point 与factor 相乘后的结果的副本。

请注意,由于点数据以整数形式存储,结果将被四舍五入到最接近的整数。若需浮点精度,请使用QPointF 。

这是一个重载函数。

另请参阅 QPoint::operator*=()。

[constexpr] QPoint operator*(float factor, const QPoint &point)

返回将给定的point 与给定的factor 相乘后的结果。

请注意,由于点数据以整数形式存储,结果将被四舍五入到最接近的整数。若需浮点精度,请使用QPointF 。

这是一个重载函数。

另请参阅 QPoint::operator*=()。

[constexpr noexcept] QPoint operator*(int factor, const QPoint &point)

返回给定的point 与给定的factor 相乘后的结果。

这是一个重载函数。

另请参阅 QPoint::operator*=()。

[constexpr noexcept] QPoint operator+(const QPoint &point)

返回未修改的point 。

[constexpr noexcept] QPoint operator+(const QPoint &p1, const QPoint &p2)

返回一个QPoint 对象,该对象是给定点p1 和p2 的和;每个分量分别相加。

另请参阅 QPoint::operator+=()。

[constexpr noexcept] QPoint operator-(const QPoint &p1, const QPoint &p2)

返回一个QPoint 对象,该对象由从p1 中减去p2 得出;每个分量分别进行减法运算。

另请参阅 QPoint::operator-=()。

[constexpr noexcept] QPoint operator-(const QPoint &point)

返回一个QPoint 对象,该对象是通过将给定的point 的两个分量都改变符号而形成的。

等同于 `QPoint(0,0) - point`。

这是一个重载函数。

[constexpr] QPoint operator/(const QPoint &point, qreal divisor)

返回通过将给定的point 的两个分量分别除以给定的divisor 所得到的QPoint 。

请注意,由于点被存储为整数,因此结果将四舍五入到最接近的整数。如需浮点精度,请使用QPointF 。

另请参阅 QPoint::operator/=()。

QDataStream &operator<<(QDataStream &stream, const QPoint &point)

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

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

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

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

QDataStream &operator>>(QDataStream &stream, QPoint &point)

从给定的stream 中读取一个点,将其写入给定的point ,并返回该流的引用。

另请参阅 《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.