本页内容

QTransform Class

QTransform 类定义了坐标系的二维变换。更多内容...

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

公共类型

enum TransformationType { TxNone, TxTranslate, TxScale, TxRotate, TxShear, TxProject }

公共函数

QTransform()
QTransform(qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy)
QTransform(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33)
QTransform(const QTransform &other)
QTransform(QTransform &&other)
qreal m11() const
qreal m12() const
qreal m13() const
qreal m21() const
qreal m22() const
qreal m23() const
qreal m31() const
qreal m32() const
qreal m33() const
QTransform adjoint() const
qreal determinant() const
qreal dx() const
qreal dy() const
QTransform inverted(bool *invertible = nullptr) const
bool isAffine() const
bool isIdentity() const
bool isInvertible() const
bool isRotating() const
bool isScaling() const
bool isTranslating() const
void map(qreal x, qreal y, qreal *tx, qreal *ty) const
QLine map(const QLine &l) const
QLineF map(const QLineF &line) const
QPainterPath map(const QPainterPath &path) const
QPoint map(const QPoint &point) const
QPointF map(const QPointF &p) const
QPolygon map(const QPolygon &polygon) const
QPolygonF map(const QPolygonF &polygon) const
QRegion map(const QRegion &region) const
void map(int x, int y, int *tx, int *ty) const
QRectF mapRect(const QRectF &rectangle) const
QRect mapRect(const QRect &rectangle) const
QPolygon mapToPolygon(const QRect &rectangle) const
void reset()
(since 6.5) QTransform &rotate(qreal a, Qt::Axis axis, qreal distanceToPlane)
QTransform &rotate(qreal a, Qt::Axis axis = Qt::ZAxis)
(since 6.5) QTransform &rotateRadians(qreal a, Qt::Axis axis, qreal distanceToPlane)
QTransform &rotateRadians(qreal a, Qt::Axis axis = Qt::ZAxis)
QTransform &scale(qreal sx, qreal sy)
void setMatrix(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33)
QTransform &shear(qreal sh, qreal sv)
QTransform &translate(qreal dx, qreal dy)
QTransform transposed() const
QTransform::TransformationType type() const
operator QVariant() const
bool operator!=(const QTransform &matrix) const
QTransform operator*(const QTransform &matrix) const
QTransform &operator*=(const QTransform &matrix)
QTransform &operator*=(qreal scalar)
QTransform &operator+=(qreal scalar)
QTransform &operator-=(qreal scalar)
QTransform &operator/=(qreal scalar)
QTransform &operator=(QTransform &&other)
QTransform &operator=(const QTransform &matrix)
bool operator==(const QTransform &matrix) const

静态公共成员

QTransform fromScale(qreal sx, qreal sy)
QTransform fromTranslate(qreal dx, qreal dy)
bool quadToQuad(const QPolygonF &one, const QPolygonF &two, QTransform &trans)
bool quadToSquare(const QPolygonF &quad, QTransform &trans)
bool squareToQuad(const QPolygonF &quad, QTransform &trans)
bool qFuzzyCompare(const QTransform &t1, const QTransform &t2)
size_t qHash(const QTransform &key, size_t seed = 0)
QLine operator*(const QLine &line, const QTransform &matrix)
QLineF operator*(const QLineF &line, const QTransform &matrix)
QPainterPath operator*(const QPainterPath &path, const QTransform &matrix)
QPoint operator*(const QPoint &point, const QTransform &matrix)
QPointF operator*(const QPointF &point, const QTransform &matrix)
QPolygon operator*(const QPolygon &polygon, const QTransform &matrix)
QPolygonF operator*(const QPolygonF &polygon, const QTransform &matrix)
QRegion operator*(const QRegion &region, const QTransform &matrix)
QDataStream &operator<<(QDataStream &stream, const QTransform &matrix)
QDataStream &operator>>(QDataStream &stream, QTransform &matrix)

详细说明

变换指定了如何平移、缩放、剪切、旋转或投影坐标系,通常用于图形渲染。

可以使用setMatrix()、scale()、rotate()、translate()和shear()函数来构建一个QTransform对象。或者,也可以通过应用basic matrix operations 来构建它。该矩阵还可以在构造时进行定义,并可以使用reset()函数将其重置为单位矩阵(默认值)。

QTransform 类支持图形基元的映射:可以通过map() 函数,将给定的点、线、多边形、区域或绘图路径映射到由该矩阵定义的坐标系中。对于矩形,可以使用mapRect() 函数对其坐标进行变换。 此外,还可以使用mapToPolygon() 函数将矩形转换为多边形(映射到由该矩阵定义的坐标系中)。

QTransform 提供了isIdentity() 函数,当矩阵为单位矩阵时,该函数返回true ;还提供了isInvertible() 函数,当矩阵为非奇异矩阵(即 AB = BA = I)时,该函数返回true 。inverted() 函数在矩阵可逆时返回其逆矩阵(否则返回单位矩阵),而adjoint() 返回该矩阵的经典伴随矩阵。此外,QTransform 还提供了determinant() 函数,该函数返回矩阵的行列式。

最后,QTransform类支持矩阵乘法、加法和减法,该类的对象既可以流式传输,也可以进行比较。

图形渲染

在渲染图形时,矩阵定义了变换,但实际的变换由QPainter 中的绘图例程执行。

默认情况下,QPainter 在关联设备的本机坐标系中进行操作。QPaintDevice 的标准坐标系原点位于左上角。x值向右递增;y值向下递增。完整说明请参阅坐标系文档。

QPainter 提供了用于平移、缩放、剪切和旋转坐标系的功能,且无需使用 QTransform。例如:

文本旋转了45度
void SimpleTransformation::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.setPen(QPen(Qt::blue, 1, Qt::DashLine));
    painter.drawRect(0, 0, 100, 100);

    painter.rotate(45);

    painter.setFont(QFont("Helvetica", 24));
    painter.setPen(QPen(Qt::black, 1));
    painter.drawText(20, 10, "QTransform");
}

尽管这些函数非常方便,但若需执行多项变换操作,构建一个 QTransform 并调用 `QPainter::setTransform()` 可能更为高效。例如:

文本的缩放、旋转和平移
void CombinedTransformation::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.setPen(QPen(Qt::blue, 1, Qt::DashLine));
    painter.drawRect(0, 0, 100, 100);

    QTransform transform;
    transform.translate(50, 50);
    transform.rotate(45);
    transform.scale(0.5, 1.0);
    painter.setTransform(transform);

    painter.setFont(QFont("Helvetica", 24));
    painter.setPen(QPen(Qt::black, 1));
    painter.drawText(20, 10, "QTransform");
}

基本矩阵运算

一幅插图,展示了一个包含3×3矩阵的对象,其中每一行都是不同的元素

一个 QTransform 对象包含一个 3×3 矩阵。m31 (dx )和m32 (dy )元素指定水平和垂直平移。m11 和m22 元素指定水平和垂直缩放。m21 和m12 元素指定水平和垂直剪切。最后,m13 和m23 元素指定水平和垂直投影,其中m33 作为额外的投影因子。

QTransform 使用以下公式将平面上的一个点变换为另一个点:

x' = m11*x + m21*y + dx
y' = m22*y + m12*x + dy
if (!isAffine()) {
    w' = m13*x + m23*y + m33
    x' /= w'
    y' /= w'
}

点(x, y)为原始点,(x', y')为变换后的点。通过对inverted() 矩阵执行相同的操作,可将(x', y')变换回(x, y)。

各矩阵元素可在构建矩阵时设置,也可在后续使用setMatrix()函数时设置。此外,还可以通过translate()、rotate()、scale()和shear()等便捷函数对其进行操作。 可通过以下函数获取当前设置的值:m11()、m12()、m13()、m21()、m22()、m23()、m31()、m32()、m33()、dx() 以及dy()。

平移是最简单的变换。将dx 和dy 分别设为相应值,即可将坐标系沿X轴移动dx 单位,沿Y轴移动dy 单位。缩放可通过设置m11 和m22 实现。例如,将m11 设为2,m22 设为1.5,将使高度加倍,宽度增加50%。 单位矩阵的m11 、m22 和m33 均设为1(其余元素均设为0),将一点映射回其自身。剪切由m12 和m21 控制。将这些元素设为非零值将扭曲坐标系。旋转可通过同时设置剪切因子和缩放因子来实现。 透视变换是通过同时设置投影因子和缩放因子来实现的。

组合变换

以下是一个使用基本矩阵运算进行变换组合的示例:

包含组合矩阵变换的文本
void BasicOperations::paintEvent(QPaintEvent *)
{
    const double a = qDegreesToRadians(45.0);
    double sina = sin(a);
    double cosa = cos(a);

    QTransform scale(0.5, 0, 0, 1.0, 0, 0);
    QTransform rotate(cosa, sina, -sina, cosa, 0, 0);
    QTransform translate(1, 0, 0, 1, 50.0, 50.0);

    QTransform transform = scale * rotate * translate;

    QPainter painter(this);
    painter.setPen(QPen(Qt::blue, 1, Qt::DashLine));
    painter.drawRect(0, 0, 100, 100);

    painter.setTransform(transform);

    painter.setFont(QFont("Helvetica", 24));
    painter.setPen(QPen(Qt::black, 1));
    painter.drawText(20, 10, "QTransform");
}

组合变换首先对每个操作数进行缩放,然后进行旋转,最后进行平移,其顺序与因子的乘积书写顺序完全一致。这意味着,应用变换的点会被隐式地从左侧与它右侧的变换相乘。

与矩阵记法的关系

QTransform 中的矩阵表示法是通常教学中那种将变换和点表示为矩阵和向量的惯例的转置形式。该惯例是将矩阵从左向右与列向量相乘。换言之,当对一个点应用多个变换时,最右侧的矩阵会首先直接作用于该向量。 然后,左侧的下一个矩阵作用于第一个运算的结果——以此类推。因此,正如您在Combining Transforms 中所见,该约定将构成复合变换的矩阵按与 QTransform 相反的顺序相乘。 将矩阵转置,并将其组合在表示该点的行向量右侧,这样在矩阵乘积中,变换矩阵的顺序就与我们设想的变换作用于该点的顺序一致。

另请参阅 QPainter 、《坐标系》、《仿射变换示例》和《变换示例》。

成员类型文档

enum QTransform::TransformationType

常数常量
QTransform::TxNone0x00
QTransform::TxTranslate0x01
QTransform::TxScale0x02
QTransform::TxRotate0x04
QTransform::TxShear0x08
QTransform::TxProject0x10

成员函数文档

QTransform::QTransform()

构建单位矩阵。

除m11 、m22 (指定缩放因子)和m33 外,所有元素均设为零,上述三个元素均设为1。

另请参阅 reset()。

QTransform::QTransform(qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy)

构建一个矩阵,其元素分别为:m11 、m12 、m21 、m22 、dx 和dy 。

另请参阅 setMatrix()。

QTransform::QTransform(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33)

构建一个矩阵,其元素分别为:m11 、m12 、m13 、m21 、m22 、m23 、m31 、m32 、m33 。

另请参阅 setMatrix()。

[constexpr noexcept default] QTransform::QTransform(const QTransform &other)

复制并构造一个QTransform 的实例。

[constexpr noexcept default] QTransform::QTransform(QTransform &&other)

通过“Move”操作构造一个QTransform 的实例。

qreal QTransform::m11() const

返回水平缩放因子。

另请参阅 scale() 和Basic Matrix Operations 。

qreal QTransform::m12() const

返回垂直剪切因子。

另请参阅 shear() 和Basic Matrix Operations 。

qreal QTransform::m13() const

返回水平投影因子。

另请参阅 translate() 和Basic Matrix Operations 。

qreal QTransform::m21() const

返回水平剪切系数。

另请参阅 shear() 和Basic Matrix Operations 。

qreal QTransform::m22() const

返回垂直缩放因子。

另请参阅 scale() 和Basic Matrix Operations 。

qreal QTransform::m23() const

返回垂直投影因子。

另请参阅 translate() 和Basic Matrix Operations 。

qreal QTransform::m31() const

返回水平平移因子。

另请参阅 dx()、translate() 以及Basic Matrix Operations 。

qreal QTransform::m32() const

返回垂直平移因子。

另请参阅 dy()、translate() 以及Basic Matrix Operations 。

qreal QTransform::m33() const

返回除数。

另请参阅 translate() 和Basic Matrix Operations 。

QTransform QTransform::adjoint() const

返回该矩阵的伴随矩阵。

qreal QTransform::determinant() const

返回矩阵的行列式。

qreal QTransform::dx() const

返回水平平移因子。

另请参阅 m31()、translate() 以及Basic Matrix Operations 。

qreal QTransform::dy() const

返回垂直平移因子。

另请参阅 translate() 和Basic Matrix Operations 。

[static] QTransform QTransform::fromScale(qreal sx, qreal sy)

创建一个矩阵,其缩放比例为水平方向sx ,垂直方向sy 。这与QTransform().scale(sx, sy)的效果相同,但速度略快一些。

[static] QTransform QTransform::fromTranslate(qreal dx, qreal dy)

创建一个矩阵,该矩阵对应于沿x轴平移dx 以及沿y轴平移dy 的操作。这与QTransform().translate(dx, dy)的效果相同,但速度稍快一些。

QTransform QTransform::inverted(bool *invertible = nullptr) const

返回该矩阵的逆矩阵。

如果矩阵是奇异矩阵(不可逆),则返回的矩阵为单位矩阵。如果invertible 有效(即不为0),当矩阵可逆时,该参数的值设为true;否则设为false。

另请参阅 isInvertible()。

bool QTransform::isAffine() const

如果该矩阵表示仿射变换,则返回true ;否则返回false 。

bool QTransform::isIdentity() const

如果矩阵是单位矩阵,则返回true ;否则返回false 。

另请参阅 reset()。

bool QTransform::isInvertible() const

如果矩阵可逆,则返回true ;否则返回false 。

另请参阅 inverted()。

bool QTransform::isRotating() const

如果矩阵表示某种旋转变换,则返回true ;否则返回false 。

注意: 180 度和/或 360 度的旋转变换 将被视为缩放变换。

另请参阅 reset()。

bool QTransform::isScaling() const

如果矩阵表示缩放变换,则返回 `true `;否则返回 `false`。

另请参阅 reset()。

bool QTransform::isTranslating() const

如果矩阵表示平移变换,则返回true ;否则返回false 。

另请参阅 reset()。

void QTransform::map(qreal x, qreal y, qreal *tx, qreal *ty) const

将给定的坐标x 和y 映射到由该矩阵定义的坐标系中。映射后的值分别存入 *tx 和 *ty 中。

坐标的变换采用以下公式:

x' = m11*x + m21*y + dx
y' = m22*y + m12*x + dy
if (!isAffine()) {
    w' = m13*x + m23*y + m33
    x' /= w'
    y' /= w'
}

点 (x, y) 为原始点,(x', y') 为变换后的点。

另请参阅 Basic Matrix Operations 。

QLine QTransform::map(const QLine &l) const

创建并返回一个QLineF 对象,该对象是给定直线l 的副本,并映射到由该矩阵定义的坐标系中。

这是一个重载函数。

QLineF QTransform::map(const QLineF &line) const

创建并返回一个QLine 对象,该对象是给定line 的副本,并被映射到由该矩阵定义的坐标系中。请注意,变换后的坐标会被四舍五入到最接近的整数。

这是一个重载函数。

QPainterPath QTransform::map(const QPainterPath &path) const

创建并返回一个QPainterPath 对象,该对象是给定的path 的副本,并映射到由该矩阵定义的坐标系中。

这是一个重载函数。

QPoint QTransform::map(const QPoint &point) const

创建并返回一个QPoint 对象,该对象是给定point 的副本,并映射到由该矩阵定义的坐标系中。请注意,变换后的坐标会被四舍五入到最接近的整数。

这是一个重载函数。

QPointF QTransform::map(const QPointF &p) const

创建并返回一个QPointF 对象,该对象是给定点p 的副本,并已映射到由该矩阵定义的坐标系中。

这是一个重载函数。

QPolygon QTransform::map(const QPolygon &polygon) const

创建并返回一个QPolygon 对象,该对象是给定polygon 的副本,并映射到由该矩阵定义的坐标系中。请注意,变换后的坐标会被四舍五入到最接近的整数。

这是一个重载函数。

QPolygonF QTransform::map(const QPolygonF &polygon) const

创建并返回一个QPolygonF 对象,该对象是给定polygon 的副本,并映射到由该矩阵定义的坐标系中。

这是一个重载函数。

QRegion QTransform::map(const QRegion &region) const

创建并返回一个QRegion 对象,该对象是给定region 的副本,并映射到由该矩阵定义的坐标系中。

如果使用了旋转或剪切操作,调用此方法的开销可能会相当大。

这是一个重载函数。

void QTransform::map(int x, int y, int *tx, int *ty) const

将给定的坐标x 和y 映射到由该矩阵定义的坐标系中。转换后的值分别存入 *tx 和 *ty 中。请注意,转换后的坐标会被四舍五入到最接近的整数。

这是一个重载函数。

QRectF QTransform::mapRect(const QRectF &rectangle) const

创建并返回一个QRectF 对象,该对象是给定的rectangle 的副本,并映射到由该矩阵定义的坐标系中。

矩形的坐标通过以下公式进行变换:

x' = m11*x + m21*y + dx
y' = m22*y + m12*x + dy
if (!isAffine()) {
    w' = m13*x + m23*y + m33
    x' /= w'
    y' /= w'
}

如果已指定旋转或剪切,则该函数将返回边界矩形。若要获取给定 `rectangle ` 映射到的精确区域,请改用 `mapToPolygon()` 函数。

另请参阅 mapToPolygon()和Basic Matrix Operations 。

QRect QTransform::mapRect(const QRect &rectangle) const

创建并返回一个QRect 对象,该对象是给定rectangle 的副本,并映射到由该矩阵定义的坐标系中。请注意,变换后的坐标会被四舍五入到最接近的整数。

这是一个重载函数。

QPolygon QTransform::mapToPolygon(const QRect &rectangle) const

创建并返回给定矩形(rectangle )的QPolygon 表示形式,将其映射到由该矩阵定义的坐标系中。

矩形的坐标使用以下公式进行变换:

x' = m11*x + m21*y + dx
y' = m22*y + m12*x + dy
if (!isAffine()) {
    w' = m13*x + m23*y + m33
    x' /= w'
    y' /= w'
}

多边形和矩形在变换时的行为略有不同(由于整数舍入),因此matrix.map(QPolygon(rectangle)) 并不总是与matrix.mapToPolygon(rectangle) 相同。

另请参阅 mapRect() 和Basic Matrix Operations 。

[static] bool QTransform::quadToQuad(const QPolygonF &one, const QPolygonF &two, QTransform &trans)

创建一个变换矩阵trans ,该矩阵将一个四边形one 映射到另一个四边形two 。如果变换可行,则返回true ;否则返回 false。

这是一个将quadToSquare() 和squareToQuad() 方法结合在一起的便捷方法。它允许将输入的四边形转换为任何其他四边形。

另请参阅 squareToQuad() 和quadToSquare()。

[static] bool QTransform::quadToSquare(const QPolygonF &quad, QTransform &trans)

创建一个变换矩阵trans ,该矩阵将四边形quad 映射到单位正方形上。如果变换成功构建,则返回true ;如果不存在此类变换,则返回false。

另请参阅 squareToQuad() 和quadToQuad()。

void QTransform::reset()

将矩阵重置为单位矩阵,即所有元素均设为零,但m11 和m22 (用于指定缩放因子)以及m33 除外,这些元素均设为 1。

另请参阅 QTransform()、isIdentity() 和Basic Matrix Operations 。

[since 6.5] QTransform &QTransform::rotate(qreal a, Qt::Axis axis, qreal distanceToPlane)

将坐标系围绕指定点axis (距离屏幕distanceToPlane 处)以给定角度a 逆时针旋转,并返回矩阵的引用。

请注意,如果将QTransform 应用于以控件坐标定义的点,由于y轴指向下方,因此旋转方向将为顺时针。

角度以度为单位指定。

如果distanceToPlane 为零,则会被忽略。这适用于实现正交投影,在这种情况下,z 坐标应被舍弃而非投影。

该函数在 Qt 6.5 中引入。

另请参阅 setMatrix()。

QTransform &QTransform::rotate(qreal a, Qt::Axis axis = Qt::ZAxis)

将坐标系围绕距离屏幕 1024.0 处的指定点axis ,以给定角度a 逆时针旋转,并返回矩阵的引用。

请注意,如果将QTransform 应用于以控件坐标定义的点,由于y轴指向下方,因此旋转方向将为顺时针。

角度以度为单位。

这是一个重载函数。

另请参阅 setMatrix 。

[since 6.5] QTransform &QTransform::rotateRadians(qreal a, Qt::Axis axis, qreal distanceToPlane)

将坐标系以给定角度a 围绕指定点axis (距离屏幕distanceToPlane 处)逆时针旋转,并返回矩阵的引用。

请注意,若将QTransform 应用于以控件坐标定义的点,由于y轴指向下方,因此旋转方向将为顺时针。

角度以弧度为单位指定。

如果distanceToPlane 为零,则会被忽略。这适用于实现正交投影,在该投影中,z坐标应被舍弃而非投影。

该函数在 Qt 6.5 中引入。

另请参阅 setMatrix()。

QTransform &QTransform::rotateRadians(qreal a, Qt::Axis axis = Qt::ZAxis)

将坐标系围绕距离屏幕1024.0处的指定axis 点,以给定角度a 逆时针旋转,并返回该矩阵的引用。

请注意,如果将QTransform 应用于以控件坐标定义的点,由于y轴指向下方,因此旋转方向将是顺时针的。

角度以弧度为单位。

这是一个重载函数。

另请参阅 setMatrix()。

QTransform &QTransform::scale(qreal sx, qreal sy)

将坐标系按水平方向sx 和垂直方向sy 进行缩放,并返回该矩阵的引用。

另请参阅 setMatrix()。

void QTransform::setMatrix(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33)

将矩阵元素设置为指定的值:m11 、m12 、m13 、m21 、m22 、m23 、m31 、m32 和m33 。请注意,此函数会覆盖原有的值。QTransform 提供了translate()、rotate()、scale() 和shear() 这些便捷函数,用于根据当前定义的坐标系操作各种矩阵元素。

另请参阅 QTransform()。

QTransform &QTransform::shear(qreal sh, qreal sv)

将坐标系按sh 水平剪切,按sv 垂直剪切,并返回该矩阵的引用。

另请参阅 setMatrix()。

[static] bool QTransform::squareToQuad(const QPolygonF &quad, QTransform &trans)

创建一个变换矩阵trans ,该矩阵将单位正方形映射到四边形quad 。如果变换已构建,则返回true ;如果不存在此类变换,则返回false。

另请参阅 quadToSquare() 和quadToQuad()。

QTransform &QTransform::translate(qreal dx, qreal dy)

将坐标系沿 x 轴移动dx ,沿 y 轴移动dy ,并返回该矩阵的引用。

另请参见 setMatrix()。

QTransform QTransform::transposed() const

返回该矩阵的转置。

QTransform::TransformationType QTransform::type() const

返回该矩阵的变换类型。

变换类型是涵盖该矩阵所有变换操作的最高枚举值。例如,如果该矩阵同时进行缩放和剪切操作,则其类型为TxShear ,因为TxShear 的枚举值高于TxScale 。

了解矩阵的变换类型对于优化非常有用:通常处理特定类型比处理通用情况更有效。

QTransform::operator QVariant() const

将变换作为QVariant 返回。

bool QTransform::operator!=(const QTransform &matrix) const

如果该矩阵不等于给定的matrix ,则返回true ;否则返回false 。

QTransform QTransform::operator*(const QTransform &matrix) const

返回该矩阵与给定的matrix 相乘的结果。

请注意,矩阵乘法不满足交换律,即 a*b != b*a。

QTransform &QTransform::operator*=(const QTransform &matrix)

返回将该矩阵与给定的matrix 相乘的结果。

这是一个重载函数。

QTransform &QTransform::operator*=(qreal scalar)

返回将该矩阵与给定的scalar 进行逐元素乘法运算后的结果。

这是一个重载函数。

QTransform &QTransform::operator+=(qreal scalar)

返回通过将给定的scalar 加到该矩阵的每个元素上而得到的矩阵。

QTransform &QTransform::operator-=(qreal scalar)

返回通过从该矩阵的每个元素中减去给定的scalar 所得到的矩阵。

QTransform &QTransform::operator/=(qreal scalar)

返回对该矩阵与给定的scalar 进行逐元素除法运算后的结果。

[noexcept default] QTransform &QTransform::operator=(QTransform &&other)

将other 通过“move-assign”操作赋值给此QTransform 实例。

[noexcept default] QTransform &QTransform::operator=(const QTransform &matrix)

将给定的matrix 的值赋给该矩阵。

bool QTransform::operator==(const QTransform &matrix) const

如果该矩阵等于给定的matrix ,则返回true ;否则返回false 。

相关的非成员

[noexcept] bool qFuzzyCompare(const QTransform &t1, const QTransform &t2)

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

[noexcept] size_t qHash(const QTransform &key, size_t seed = 0)

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

QLine operator*(const QLine &line, const QTransform &matrix)

这与matrix.map(line) 效果相同。

另请参阅 QTransform::map()。

QLineF operator*(const QLineF &line, const QTransform &matrix)

这与matrix.map(line) 效果相同。

另请参阅 QTransform::map()。

QPainterPath operator*(const QPainterPath &path, const QTransform &matrix)

这与matrix.map(path) 效果相同。

另请参阅 QTransform::map()。

QPoint operator*(const QPoint &point, const QTransform &matrix)

这与matrix.map(point) 效果相同。

另请参阅 QTransform::map()。

QPointF operator*(const QPointF &point, const QTransform &matrix)

与matrix.map(point) 相同。

另请参阅 QTransform::map()。

QPolygon operator*(const QPolygon &polygon, const QTransform &matrix)

这与matrix.map(polygon) 效果相同。

另请参阅 QTransform::map()。

QPolygonF operator*(const QPolygonF &polygon, const QTransform &matrix)

这与matrix.map(polygon) 效果相同。

另请参阅 QTransform::map()。

QRegion operator*(const QRegion &region, const QTransform &matrix)

这与matrix.map(region) 效果相同。

另请参阅 QTransform::map()。

QDataStream &operator<<(QDataStream &stream, const QTransform &matrix)

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

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

QDataStream &operator>>(QDataStream &stream, QTransform &matrix)

从指定的stream 读取给定的matrix ,并返回该流的引用。

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