QGraphicsView 实例2基本结构和功能实现

本文详细介绍了Qt的Graphics View框架,包括QGraphicsScene的事件管理和图元管理,QGraphicsView的视图调整与坐标转换,以及QGraphicsItem的图形项功能和坐标系统。通过实例展示了如何实现图形界面的基本结构和功能,包括自定义视图组件、图形项的位置调整、坐标显示以及解决中文乱码问题。
摘要由CSDN通过智能技术生成

Graphics View框架结构”三元素“:场景类(QGraphicsScene)、视图类(QGraphicsView)和图元类(QGraphicsItem)。场景类提供管理位于其中的图元容器,视图类显示场景中的图元,场景可以通过多个视图表现。

QGraphicsScene——场景

主要工作:

1.提供管理大量图形项的快速接口

2.将事件传播给每个图形项

3.管理每个图形项的状态,如:选择状态,焦点状态等

4.管理未经变换的渲染功能,主要用于打印
放置图元的容器,本身不可见,通过关联视图类显示和操作。
QGraphicsScene::addItem()添加图元。
QGraphicsScene::items()返回与点、矩形、多边形或向量路径相交的所有图元。
QGraphicsScene::itemAt()返回指定点的顶层图元。

场景事件发送给图元,同时管理图元间事件传播。场景收到某一点鼠标单击事件,场景会将事件传给这一点的图元。

管理图元事件。
QGraphicsScene::setSelectionArea()  选择图元,选择区域任意形状,QPainterPath表示。
QGraphicsScene::selectedItems()   获得当前选择图元列表。
QGraphicsScene::setFocusItem()或QGraphicsScene::setFocus()设置图元焦点。
QGraphicsScene::focusItem()   获得当前焦点图元。
QGraphicsScene::render()  在绘图设备上绘制场景。

场景坐标:
中心为原点,每个图元都有场景坐标和相应的包容框,等价于QPainter的逻辑坐标,一般以场景中心为原点。

场景还有背景层和前景层,QBrush指定,也可通过drawBackground()和drawForeground()自定义。

场景变化时发射QGraphicsScene::changed()信号,参数说场景的矩形列表,表示发生变化的矩形区。

QGraphicsView——视图

可视窗口,显示场景中图元。同一场景可以多个视图,相同数据集可以不同视图。
视图大于场景时,默认场景在视图的中间显示,也可通过视图的Alignment属性设置场景在视图中的显示位置;视图小于场景时,提供卷滚条显示。
可滚动窗口部件,QGraphicsView::setViewport()将视图设置为QGLWidget。
接收鼠标键盘输入,并翻译为场景事件(转换为场景坐标),然后传送给场景。
QGraphicsView::matrix()变换场景坐标,实现场景缩放和选择。
QGraphicsView::mapToScene()和QGraphicsView::mapFromScene()与场景坐标转换。

视图坐标:
窗口部件的坐标(设备坐标,物理坐标),单位是像素,左上角是(0,0)。
所有鼠标事件最开始都是使用视图坐标。

QGraphicsItem——图形项

直线(QGraphicsLineItem)、椭圆(QGraphicsEllipseItem)、文本图元(QGraphicsTextItem)、矩形(QGraphicsRectItem)等。
主要功能:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值