QGraphicsView、QGraphicsScene和QGraphicsItem三者关系

        按我自己的理解做个比如吧,不知道准不准确,但是应该能很好理解。

        将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详解 - 星语海蓝 - 博客园

四 继承QGraphicsItem,实现图像的缩放拖动等

        继承QGraphicsItem类 (二) 实现图形的拖动及画选中框_白嫖真香的博客-CSDN博客

        继承QGraphicsItem类 (一) 实现图形的缩放_白嫖真香的博客-CSDN博客

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论 1

打赏作者

跑路人员

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值