为什么的QGraphicsItem :: scenePos()回头率(0,0)
-
18-09-2019 - |
题
我已经玩弄此片的代码:
QGraphicsLineItem * anotherLine = this->addLine(50,50, 100, 100);
qDebug() << anotherLine->scenePos();
QGraphicsLineItem * anotherLine2 = this->addLine(80,10, 300, 300);
qDebug() << anotherLine2->scenePos();
当this
指针指QGraphicsScene
。在这两种情况下,我得到两个输出QPointF(0,0)
。出租车从阅读的文档,我想scenePos()
应该在场景内返回线的位置,而不是在那里是它的局部坐标系中。我在做什么错了?
解决方案
仔细阅读QT 4.5文档后 addLine ,我明白我一直在做错误的。根据该文档:
请注意,该项目的几何 在项目的坐标提供,其 位置被初始化为(0,0)
所以,如果我指定addLine(50,50,100,100),其实我只是修改它的本地项目协调。我做了一个场景的坐标将被处理的假设是错误的或毫无根据的。我应该做的是这样的
// Create a line of length 100
QGraphicsItem * anotherLine = addLine(0,0, 100, 100);
// move it to where I want it to be within the scene
anotherLine->setPos(50,50);
所以,如果我被场景中绘制添加一行,我需要它的中心重置为(0,0),然后使用setPos()将其移动到那里我希望它是在场景中。
希望这可以帮助任何人在同样的问题,谁绊倒。
不隶属于 StackOverflow