按我自己的理解做个比如吧,不知道准不准确,但是应该能很好理解。
将QGraphicsView比作成一台手机,那么QGraphicsScene相当于手机里的app,比如是音乐播放器的话,那么QGraphicsItem就是里面的歌曲,在复杂点的话,就可以是播放器里的一切,不单单是歌曲,如播放、暂停按钮,歌词,歌手海报啥的。
多个views可以监视同一个场景,而场景包含多个具有多种几何外形的items。所以这句话大概意思就是多台手机里面都可以有同一个播放器,然后这个播放器有可以有很多的歌曲。
QGraphicsView和QGraphicsItem的坐标原点在中心位置,而QGraphicsScene的原点在左上角。
一 QGraphicsView 视图
QGraphicsView提供了视图部件,它可视化场景中的内容。通过 setScene(QGraphicsSceneQGraphicsSceneQGraphicsScene *scene)来添加QGraphicsScene场景。
如看图软件一样可以实现放大缩小而不会用到水平竖直的滑动条,一般会将Scene场景在View视图上的大小为视图的宽高,通过setSceneRect()实现将Scene场景放到什么位置及大小。
有时候自己继承了QGraphicsItem重写,绘画图形后,会出现它们的残影,可以设置View的属性viewportUpdateMode,默认为QGraphicsView::MinimalViewportUpdate,设置成QGraphicsView::FullViewportUpdate就可以解决由Item产生的残影。
View 视图还可以实现3D图形的绘画。为了使用OpenGL,你应该调用QGraphicsView::setViewport()来把一个QGLWidget设为视口。
二 QGraphicsScene 场景
QGraphicsScene 表示Graphics View中的场景,它有以下职责: 为管理大量的items提供一个快速的接口。 传播事件到每个item。 管理item的状态,例如选择,焦点处理。 提供未经变换的渲染功能,主要用于打印。 场景作为QGraphicsItem对象的容器。通过调用QgraphicsScene::addItem()把这些Items加入到场景中。可以使用众多的查找函数来获取特定的items。
所有的item查找函数都以出栈序列返回(也就是说,第一个返回的是最顶端的,最后一个返回的是最底端的)。
三 QGraphicsItem
QGraphicsItem 是场景中图形items的基类。Graphics View 提供了一些标准的、用于典型形状的items。像矩形(QGraphicsRectItem),椭圆(QGraphicsEllipseItem),文本(QGraphicsTextItem),当你写定制的item时,那些最有用的一些QGraphicsItem特性也是有效的。除此这外,QGraphicsItem支持以下特性: *鼠标按、移动、释放、双击事件,鼠标悬停事件,滚轮事件,弹出菜单事件。 *键盘输入焦点,键盘事件。 *拖拽 *组,包括父子关系,使用QGraphicsItemGroup *碰撞检测 Items如同QGraphicsView一样,位于本地坐标系,它也为item与场景之间,item与item之间的坐标转换提供许多工具函数。
Qt绘图之QGraphicsScene QGraphicsView QGraphicsItem详解 - 星语海蓝 - 博客园