Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QGraphicsItem-项转换失败_C++_Qt_Transformation_Qgraphicsview_Qgraphicsitem - Fatal编程技术网

C++ QGraphicsItem-项转换失败

C++ QGraphicsItem-项转换失败,c++,qt,transformation,qgraphicsview,qgraphicsitem,C++,Qt,Transformation,Qgraphicsview,Qgraphicsitem,我有一个在QGraphicsItem中使用的矩形。项目被添加到场景中,并具有预定义的变换,以便正确映射矩形。到目前为止一切都很好: QRectF rect; QTransform transform; QGraphicsPolygonItem box; box.setTransform(transform); box.setPolygon(rect); qDebug() << rect; qDebug() << transform; qDebu

我有一个在QGraphicsItem中使用的矩形。项目被添加到场景中,并具有预定义的变换,以便正确映射矩形。到目前为止一切都很好:

QRectF rect;    
QTransform transform;    
QGraphicsPolygonItem box;

box.setTransform(transform);    
box.setPolygon(rect);

qDebug() << rect;
qDebug() << transform;
qDebug() << transform.map(rect.topLeft());
qDebug() << transform.map(rect.topRight());
qDebug() << transform.map(rect.bottomRight());
qDebug() << transform.map(rect.bottomLeft());
qDebug() << transform.map(rect);
qDebug() << box.polygon();
qDebug() << box.scenePos();
如期而至;一切正常;顶点和项目本身都被正确地转换,我可以用map函数检查所有这些。这至少适用于40种不同的变换

然而,对于另一个变换矩阵,我遇到了这个有趣的结果:

QRectF(29.8193,9.86656 29.6347x43.7413)
QTransform(type=TxProject, 11=-4.51027 12=2.57144e-16 13=-1.00432e-19 21=7.88867 22=0.184078 23=0.00360371 31=-511.257 32=-69.1552 33=-0.353853)
QPointF(1784.23, 211.56)
QPointF(2204.16, 211.56)
QPointF(2218.99, 369.009)
QPointF(1387.07, 369.009)
QPolygonF(QPointF(0, 0) )
QPolygonF(QPointF(29.8193, 9.86656) QPointF(59.454, 9.86656) QPointF(59.454, 53.6079) QPointF(29.8193, 53.6079) QPointF(29.8193, 9.86656) )
QPointF(1444.83, 195.435)
顶点变换成功;但是rect项不能。它为转换输出0,0

我认为这一定是框架中的一个bug,因为它可以很好地转换一个点,但它不能转换项目。我还有很多椭圆,不能转换矩形。但当我试图繁殖的时候,我不能;它只发生在这个矩阵上

由于map不起作用,item.setTransform——我认为它在内部使用map——也不起作用。项目未显示在场景中

为了清晰起见,我将第二个矩阵附在这里

我做错了什么?精密虫?32位问题

编辑:向下挖掘,似乎映射对不同类型(如QPointF、QLineF等)使用了不同的方法。

向下挖掘,似乎转换不支持负w值,这就是我面临的问题,因为w=m13.px+m23.py+m33对于第二个矩阵是负的

将矩阵乘以-1修复了这个错误

Qt文档应该真正提到这一点

QRectF(29.8193,9.86656 29.6347x43.7413)
QTransform(type=TxProject, 11=-4.51027 12=2.57144e-16 13=-1.00432e-19 21=7.88867 22=0.184078 23=0.00360371 31=-511.257 32=-69.1552 33=-0.353853)
QPointF(1784.23, 211.56)
QPointF(2204.16, 211.56)
QPointF(2218.99, 369.009)
QPointF(1387.07, 369.009)
QPolygonF(QPointF(0, 0) )
QPolygonF(QPointF(29.8193, 9.86656) QPointF(59.454, 9.86656) QPointF(59.454, 53.6079) QPointF(29.8193, 53.6079) QPointF(29.8193, 9.86656) )
QPointF(1444.83, 195.435)