0
点赞
收藏
分享

微信扫一扫

关于QGraphicsItem的scenePos一直为(0,0)的解决方案


一、前言

在使用Qt的图形视图框架添加图元时,因为我们的不当操作,可能会使得图元的场景坐标一直为(0,0)

当我们需要使用场景坐标scenePos的时候就会达不到我们的需求。

二、原因

举例说明:当我们需要添加一个(100,100)到(1000,1000)的QGraphicsLineItem时,可能会通过下面的方案添加图元:

QGraphicsLineItem* lineItem = new QGraphicsLineItem(100,100,1000,1000);
addItem(lineItem);

或者

QGraphicsLineItem* lineItem = new QGraphicsLineItem;
lineItem->setLine(100,100,1000,1000)
addItem(lineItem);

这种添加方式,scenePos就会一直为(0,0)

三、解决方案

Qt的图形视图框架,在添加图元时,官方的推荐方法是:先在(0,0)点处创建图元,然后移动到指定位置

举例说明:当我们需要添加一个(100,100)到(1000,1000)的QGraphicsLineItem时:

QGraphicsLineItem* lineItem = new QGraphicsLineItem(0,0,1000-100,1000-100);
addItem(lineItem);
lineItem->setPos(100,100);

或者

QGraphicsLineItem* lineItem = new QGraphicsLineItem;
lineItem->setLine(0,0,1000-100,1000-100)
addItem(lineItem);
lineItem->setPos(100,100);

通过这种方式添加图元,图元的scenePos就不会一直是(0,0)


举报

相关推荐

0 条评论