QGraphicsView坐标系统
使用流程
QGraphicsScene scene;
QGraphicsItem item;
scene.addItem(&item);
item.setPost(0, 0);
QGraphicsView view(&scene);
view.show();
view可以在创建时设置scene,也可以创建后使用setScene接口设置。
item与scene的坐标关系
item有两个坐标关键因素,pos和boundingRect。
-
item的pos决定了item在scene坐标系统中的位置。
-
item的setPos时将自己坐标系统的(0,0)点放在scene坐标系统的pos上。
-
item的boundingRect决定了item的大小,影响鼠标事件等。
-
item的boundingRect按的是item自己的坐标系统,如果返回(0, 0, width, height)则是把左上角放在对应的pos。
scene与view的坐标关系
scene有两个边框,itemsBoundingRect和sceneRect。
-
itemsBoundingRect由scene中所有item的pos和item的boundingRect计算得来。由pos固定坐标,itemsBoundingRect刚刚好包含主所有的item的boundingRect。
-
如果没有调用setSceneRect指定,则sceneRect等于itemsBoundingRect。
-
sceneRect永远剧中显示在view的正中心。
-
sceneRect以外的部门也可以显示在view上。
-
当sceneRect超过view的大小时,view显示滚动条,滚动条的中心仍然是sceneRect的中心。
评论区