Qt学习笔记-----Graphics_View_Framework

这篇博客详细介绍了Qt的Graphics View Framework,包括核心的QGraphicsScene、QGraphicsView和QGraphicsItem类。QGraphicsScene作为图形视图的基础,管理元素并处理事件;QGraphicsView展示场景内容并处理用户输入;QGraphicsItem作为场景中的基本组件,具有碰撞检测功能。文章还探讨了三者之间的坐标系统转换和坐标映射方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Graphics View框架中三个重要的类:QGraphicsScene, QGraphicsView,  QGraphicsItem。

Scene提供了图形视图场景,它是整个框架的基础,负责以下四个事情:

1.为了管理大量元素item,它提供了一个快速的接口

2.传播事件给每一个元素item

3.管理元素item状态,例如选择和焦点处理

4.提供原生的渲染功能,主要用于绘图。

Scene场景充当一个QGraphicsItem对象,可以使用addItem()函数将元素item添加到场景中,场景负责管理添加到自身的元素,比如传播事件等。可以把Scene想象成一个管理器,统一管理它旗下的元素item。


View视图主要作为场景中的视图组件,它将场景中的内容展现在我们的眼前。同时它还负责接收来自键盘和鼠标的输入事件,然后将事件转换成场景事件然后传播给Scene。


Item元素是场景中基础组件,它被添加到场景中,然后被View视图显示出来。描述元素主要利用一些属性,

shape()函数返回元素的轮廓图,如果我们定义了一个类继承QGraphicsItem,那么我们就需要实现shape()函数返回这个类表示的元素的轮廓图(为了画出一个东西,首先当然要知道它的轮廓图,或者说形状是什么样子嘛,不然谁知道怎么画。。。)。shape()函数返回的是QPainterPath类型,用于表示外围轮廓。

boundingRect()函数则返回包围元素的最小矩形,用于Scene判断哪个区域发生了改变。

此外,QGraphicsItem类自带碰撞检测,这就为元素之间的相互作用提供了很大的方便。因为我们每创建一个元素,就需要使用addItem函数将其添加到Scene中,所以就可以使用QGraphicsItem::collidesWith()函数来返回所有在Scene中与该元素发生碰撞的元素。


除此之外,就是三者的坐标系统,一旦决定使用Graphics View框架,就注定要与三者的坐标变换奋斗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值