本页内容

QVector4D Class

QVector4D 类表示 4D 空间中的向量或顶点。更多内容...

头文件: #include <QVector4D>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

公共函数

QVector4D()
QVector4D(QPoint point)
QVector4D(QPointF point)
QVector4D(QVector2D vector)
QVector4D(QVector3D vector)
QVector4D(QVector3D vector, float wpos)
QVector4D(QVector2D vector, float zpos, float wpos)
QVector4D(float xpos, float ypos, float zpos, float wpos)
bool isNull() const
float length() const
float lengthSquared() const
void normalize()
QVector4D normalized() const
void setW(float w)
void setX(float x)
void setY(float y)
void setZ(float z)
QPoint toPoint() const
QPointF toPointF() const
QVector2D toVector2D() const
QVector2D toVector2DAffine() const
QVector3D toVector3D() const
QVector3D toVector3DAffine() const
float w() const
float x() const
float y() const
float z() const
operator QVariant() const
QVector4D &operator*=(QVector4D vector)
QVector4D &operator*=(float factor)
QVector4D &operator+=(QVector4D vector)
QVector4D &operator-=(QVector4D vector)
QVector4D &operator/=(QVector4D vector)
QVector4D &operator/=(float divisor)
float &operator[](int i)
float operator[](int i) const

静态公共成员

float dotProduct(QVector4D v1, QVector4D v2)
bool qFuzzyCompare(QVector4D v1, QVector4D v2)
(since 6.12) size_t qHash(QVector4D key, size_t seed = 0)
bool operator!=(QVector4D v1, QVector4D v2)
QVector4D operator*(QVector4D v1, QVector4D v2)
QVector4D operator*(QVector4D vector, float factor)
QVector4D operator*(float factor, QVector4D vector)
QVector4D operator+(QVector4D v1, QVector4D v2)
QVector4D operator-(QVector4D v1, QVector4D v2)
QVector4D operator-(QVector4D vector)
QVector4D operator/(QVector4D vector, QVector4D divisor)
QVector4D operator/(QVector4D vector, float divisor)
QDataStream &operator<<(QDataStream &stream, QVector4D vector)
bool operator==(QVector4D v1, QVector4D v2)
QDataStream &operator>>(QDataStream &stream, QVector4D &vector)

详细说明

向量是 3D 空间 4D 仿射表示的主要构成要素之一。它们由四个有限的浮点坐标组成,通常称为 x、y、z 和 w。

QVector4D 类也可用于表示 4D 空间中的顶点。因此,我们无需提供单独的顶点类。

另请参阅 QQuaternion 、QVector2D 以及QVector3D 。

成员函数文档

[constexpr noexcept] QVector4D::QVector4D()

构建一个零向量,即坐标为 (0, 0, 0, 0) 的向量。

[explicit constexpr noexcept] QVector4D::QVector4D(QPoint point)

根据一个二维point ,构建一个具有x和y坐标的向量,其中z和w坐标均为0。

[explicit constexpr noexcept] QVector4D::QVector4D(QPointF point)

根据一个二维point ,构建一个具有x和y坐标的向量,其中z和w坐标均为0。

[explicit constexpr noexcept] QVector4D::QVector4D(QVector2D vector)

根据指定的二维vector 构建一个4维向量。z和w坐标均设为零。

另请参阅 toVector2D()。

[explicit constexpr noexcept] QVector4D::QVector4D(QVector3D vector)

根据指定的三维向量vector 构建一个四维向量。w坐标被设为零。

另请参阅 toVector3D()。

[constexpr noexcept] QVector4D::QVector4D(QVector3D vector, float wpos)

根据指定的三维向量vector 构建一个四维向量。w坐标被设置为wpos ,该值必须是有限的。

另请参阅 toVector3D()。

[constexpr noexcept] QVector4D::QVector4D(QVector2D vector, float zpos, float wpos)

根据指定的二维向量vector 构造一个四维向量。z 和 w 坐标分别设置为zpos 和wpos ,且两者均必须为有限值。

另请参阅 toVector2D()。

[constexpr noexcept] QVector4D::QVector4D(float xpos, float ypos, float zpos, float wpos)

构建一个坐标为 (xpos,ypos,zpos,wpos) 的向量。所有参数必须是有限的。

[static constexpr noexcept] float QVector4D::dotProduct(QVector4D v1, QVector4D v2)

返回v1 与v2 的点积。

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

如果 x、y、z 和 w 坐标均设置为 0.0,则返回 `true `;否则返回 `false`。

[noexcept] float QVector4D::length() const

返回从原点开始的向量长度。

另请参阅 lengthSquared() 和normalized()。

[constexpr noexcept] float QVector4D::lengthSquared() const

返回向量到原点的距离的平方。这等同于该向量与自身的点积。

另请参阅 length() 和dotProduct()。

[noexcept] void QVector4D::normalize()

就地对当前向量进行归一化。如果该向量为空向量,或者向量的长度非常接近 1,则不会发生任何变化。

另请参阅 length() 和normalized()。

[noexcept] QVector4D QVector4D::normalized() const

返回该向量的归一化单位向量形式。

如果该向量为空,则返回空向量。如果向量的长度非常接近 1,则直接返回该向量。否则,将返回长度为 1 的该向量的归一化形式。

另请参阅 length() 和normalize()。

[constexpr noexcept] void QVector4D::setW(float w)

将该点的 w 坐标设置为给定的有限w 坐标。

另请参阅 w()、setX()、setY() 以及setZ()。

[constexpr noexcept] void QVector4D::setX(float x)

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

另请参阅 x()、setY()、setZ() 以及setW()。

[constexpr noexcept] void QVector4D::setY(float y)

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

另请参阅 y()、setX()、setZ() 以及setW()。

[constexpr noexcept] void QVector4D::setZ(float z)

将该点的 z 坐标设置为给定的有限坐标z 。

另请参阅 z()、setX()、setY() 以及setW()。

[constexpr noexcept] QPoint QVector4D::toPoint() const

返回该4D向量的QPoint 形式。z和w坐标将被舍弃。x和y坐标将四舍五入到最接近的整数。

另请参阅 toPointF() 和toVector2D()。

[constexpr noexcept] QPointF QVector4D::toPointF() const

返回该4D向量的QPointF 形式。z和w坐标将被舍弃。

另请参阅 toPoint() 和toVector2D()。

[constexpr noexcept] QVector2D QVector4D::toVector2D() const

返回该 4D 向量的 2D 向量形式,并舍弃 z 和 w 坐标。

另请参阅 toVector2DAffine()、toVector3D() 和toPoint()。

[constexpr noexcept] QVector2D QVector4D::toVector2DAffine() const

返回该 4D 向量的 2D 向量形式,即将 x 和 y 坐标除以 w 坐标,并舍弃 z 坐标。若 w 为零,则返回空向量。

另请参阅 toVector2D()、toVector3DAffine() 和toPoint()。

[constexpr noexcept] QVector3D QVector4D::toVector3D() const

返回该 4 维向量的 3 维向量形式,并舍弃 w 坐标。

另请参阅 toVector3DAffine()、toVector2D() 和toPoint()。

[constexpr noexcept] QVector3D QVector4D::toVector3DAffine() const

返回该 4D 向量的 3D 向量形式,即将 x、y 和 z 坐标除以 w 坐标。如果 w 为零,则返回空向量。

另请参阅 toVector3D()、toVector2DAffine() 和toPoint()。

[constexpr noexcept] float QVector4D::w() const

返回该点的 w 坐标。

另请参阅 setW()、x()、y() 以及z()。

[constexpr noexcept] float QVector4D::x() const

返回该点的 x 坐标。

另请参阅 setX()、y()、z() 以及w()。

[constexpr noexcept] float QVector4D::y() const

返回该点的 y 坐标。

另请参阅 setY()、x()、z() 以及w()。

[constexpr noexcept] float QVector4D::z() const

返回该点的 z 坐标。

另请参阅 setZ(),x(),y() 以及w()。

QVector4D::operator QVariant() const

将该4维向量作为QVariant 返回。

[constexpr noexcept] QVector4D &QVector4D::operator*=(QVector4D vector)

将该向量的每个分量与vector 中的对应分量相乘,并返回该向量的引用。

另请参阅 operator/=() 和operator*()。

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

将该向量的坐标乘以给定的有限数factor ,并返回对该向量的引用。

另请参阅 operator/=() 和operator*()。

[constexpr noexcept] QVector4D &QVector4D::operator+=(QVector4D vector)

将给定的vector 添加到该向量中,并返回该向量的引用。

另请参阅 operator-=()。

[constexpr noexcept] QVector4D &QVector4D::operator-=(QVector4D vector)

从该向量中减去给定的vector ,并返回该向量的引用。

另请参阅 operator+=()。

[constexpr] QVector4D &QVector4D::operator/=(QVector4D vector)

将该向量的每个分量除以vector 中对应的分量,并返回该向量的引用。

vector 中的所有分量均不得为零或 NaN。

另请参阅 operator*=() 和operator/()。

[constexpr] QVector4D &QVector4D::operator/=(float divisor)

将该向量的坐标除以给定的divisor ,并返回该向量的引用。divisor 不能为零或NaN。

另请参阅 operator*=()。

[constexpr] float &QVector4D::operator[](int i)

返回向量中索引位置i 处的分量,作为可修改的引用。

i i 必须是向量中的有效索引位置(即 0 <= < 4)。

[constexpr] float QVector4D::operator[](int i) const

返回向量在索引位置i 处的分量。

i 该索引位置必须是向量中的有效索引(即 0 <=i < 4)。

相关的非成员

[noexcept] bool qFuzzyCompare(QVector4D v1, QVector4D v2)

如果 `v1 ` 和 `v2 ` 相等(允许浮点数比较中存在微小的误差),则返回 `true `;否则返回 `false`。

[constexpr noexcept, since 6.12] size_t qHash(QVector4D key, size_t seed = 0)

返回key 的哈希值,并使用seed 作为计算的种子。

该函数于 Qt 6.12 中引入。

[constexpr noexcept] bool operator!=(QVector4D v1, QVector4D v2)

如果 `v1 ` 不等于 `v2`,则返回 `true `;否则返回 `false`。该运算符使用精确浮点比较。

[constexpr noexcept] QVector4D operator*(QVector4D v1, QVector4D v2)

返回由将v1 的每个分量与v2 的对应分量相乘而形成的QVector4D 对象。

注意:这 绝非v1 与v2 的叉积。(其各分量的和等于v1 与v2 的点积。)

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

[constexpr noexcept] QVector4D operator*(QVector4D vector, float factor)

返回给定vector 的副本,并将其与给定的factor 相乘。

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

[constexpr noexcept] QVector4D operator*(float factor, QVector4D vector)

返回给定vector 的副本,并将其与给定的factor 相乘。

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

[constexpr noexcept] QVector4D operator+(QVector4D v1, QVector4D v2)

返回一个QVector4D 对象,该对象是给定向量v1 和v2 的和;每个分量分别相加。

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

[constexpr noexcept] QVector4D operator-(QVector4D v1, QVector4D v2)

返回一个QVector4D 对象,该对象由从v1 中减去v2 得到;每个分量分别进行减法运算。

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

[constexpr noexcept] QVector4D operator-(QVector4D vector)

返回一个QVector4D 对象,该对象是通过将给定的vector 的三个分量全部改变符号而形成的。

等同于QVector4D(0,0,0,0) - vector 。

这是一个重载函数。

[constexpr] QVector4D operator/(QVector4D vector, QVector4D divisor)

返回一个QVector4D 对象,该对象通过将给定的vector 的每个分量除以给定的divisor 的相应分量而形成。

该divisor 中不得包含任何值为零或NaN的分量。

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

[constexpr] QVector4D operator/(QVector4D vector, float divisor)

返回一个QVector4D 对象,该对象由将给定的vector 的每个分量除以给定的divisor 后得到。

该divisor 的值不能为零或NaN。

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

QDataStream &operator<<(QDataStream &stream, QVector4D vector)

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

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

[constexpr noexcept] bool operator==(QVector4D v1, QVector4D v2)

如果 `v1 ` 等于 `v2`,则返回 `true `;否则返回 `false`。该运算符使用精确浮点比较。

QDataStream &operator>>(QDataStream &stream, QVector4D &vector)

从给定的stream 中读取一个4维向量到给定的vector 中,并返回该流的引用。

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