QTransform quadToQuad始终返回false

QTransform quadToQuad始终返回false,qt,qml,blackberry-10,Qt,Qml,Blackberry 10,我正在尝试使用quadToQuad来变换坐标,这样我就可以在调整大小的图像上绘制一个像素,并将坐标转换回原始图像 出于示例目的,我制作了两个矩形,但quadToQuad函数总是返回false 有人知道它为什么会失败吗 QRectF origRect(QPointF(0, 0), QPointF(800, 800)); QRectF resizeRect(QPointF(0, 0), QPointF(400, 400)); QTransform mappingTransform; qDebu

我正在尝试使用quadToQuad来变换坐标,这样我就可以在调整大小的图像上绘制一个像素,并将坐标转换回原始图像

出于示例目的,我制作了两个矩形,但quadToQuad函数总是返回false

有人知道它为什么会失败吗

QRectF origRect(QPointF(0, 0), QPointF(800, 800));

QRectF resizeRect(QPointF(0, 0), QPointF(400, 400));

QTransform mappingTransform;

qDebug() << (QTransform::quadToQuad(origRect, resizeRect, mappingTransform));

QPointF point = mappingTransform.map(QPointF(x, y));
qrectforigrect(QPointF(0,0),QPointF(800800));
QRectF resizeRect(QPointF(0,0),QPointF(400400));
Q变换映射变换;

qDebug()我认为问题在于quadToQuad将QPolygonF作为输入,而不是QRectF。在声明mappingTransform后尝试插入以下内容:

QPolygonF orig(origRect);
QPolygonF resize(resizeRect);
qDebug() << (QTransform::quadToQuad(orig, resize, mappingTransform));
QPolygonF-orig(origRect);
QPolygonF resize(resizeRect);

qDebug()对此进行了一次尝试,但仍然返回false。谢谢!我会试试这个然后再给你回复。什么是QRectF tileBox(QPointF(w,s+D),QPointF(w+D,s));w、 s和D?也帮了我,谢谢。使用构造函数和您的方法之间的区别在于,QPolygonF的构造函数创建了一个“闭合”多边形(第一个点=最后一个点),结果是5个点,而您的代码只创建了4个点(“开放”多边形)。
QRectF  tileBox(QPointF(w, s+D), QPointF(w+D, s));
QPolygonF   q0 = rectToQuad(tileBox);

QPolygonF   q1;
q1      <<  QPointF(0,0)
    <<  QPointF(1201,0)
    <<  QPointF(1201,1201)
    <<  QPointF(0, 1201);

QTransform  tileTransform;

bool ok = QTransform::quadToQuad(q0, q1, tileTransform);
QPolygonF   MyClass::rectToQuad(QRectF rect) {
QPolygonF   quad;

quad    << rect.topLeft()
    << rect.topRight()
    << rect.bottomRight()
    << rect.bottomLeft();

return quad;
}