1 / 33
文档名称:

Qt学习笔记图形视图框架.doc

格式:doc   大小:136KB   页数:33页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Qt学习笔记图形视图框架.doc

上传人:260933426 2017/9/5 文件大小:136 KB

下载得到文件列表

Qt学习笔记图形视图框架.doc

相关文档

文档介绍

文档介绍:Qt学****笔记--图形视图框架(一)
2010-07-11 07:40
优点:处理多个图元,单击,拖动,选择图元
架构:一个场景,多个图元位于其中,通过视图显示
主要应用: 绘图软件,显示地图软件
当使用没有变换的视图观察场景时,场景中的一个单元对应屏幕上的一个像素
图元坐标通常以图元中心为原点,X轴正方向为向右,Y轴正方向为向下
场景坐标的原点在场景中心,X轴正方向为向右,Y轴正方向为向下
视图坐标以左上角为原点,X轴正方向为向右,Y轴正方向为向下
所有的鼠标事件最开始都是使用视图坐标
场景:图元的容器


,例如选择和焦点处理
,主要用于打印
QGraphicsScene scene;
QGraphicsRectItem *rect = (QRectF(0, 0, 100, 100)); // 添加图元
QGraphicsItem *item = (50, 50); // 查询图元
// item == rect;
通过QGraphicsScene::setSelectionArea()可以选择场景的任一个图元,
QGraphicsScene::setSelectedItems()返回被选择的图元
设置焦点图元QGraphicsScene::setFocusItem(), setFocus(),
QGraphicsScene::focusItem(), 返回焦点图元
视图:
一个可视的子部件,可视化场景的内容
多个视图可以显示同一个场景
坐标转换:QGraphicsView::mapToScene(), QGraphicsView::mapFromScene()
图元:
支持鼠标事件,滚轮事件,上下文菜单事件
支持键盘输入焦点,按键事件
支持拖放
支持分组
冲突探测
提供坐标转换,图元与场景,图元与图元之间
利用QGraphicsItem::shape()和QGraphicsItem::collidesWith()
实现冲突探测,这2个函数都是虚函数
相关类:QGraphicsScene, QGraphicsItem, QGraphicsView
QGraphicsItem子类:
QGraphicsEllipseItem provides an ellipse item
QGraphicsLineItem provides a line item
QGraphicsPathItem provides an arbitrary path item
QGraphicsPixmapItem provides a pixmap item
QGraphicsPolygonItem provides a polygon item
QGraphicsRectItem provides a rectangular item
QGraphicsSimpleTextItem provides a simple text label item
QGraphicsTextItem provides an advanced text browser item
QGraphicsSvgItem provides a SVG file item
QGraphicsScene:
拥有多个图元,包含三层:背景层,图元层,前景层
背景层和前景层可以使用QBrush绘制,也可以使用drawBackground(),drawForeground()实现
如果使用图片作为背景,可以用texture QBrush(pixmap)实现
前景层brush可以使用半透明的白色实现褪色效果,或者使用交叉模式实现网格重叠
场景可以告诉我们,哪些图元发生冲突,哪些图元被选择,哪些图元位于一个特定的点或者区域
每个图元可以是:,场景是它的父亲;,它的父亲是另一个图元,任何作用于父图元的转换
都将自动应用于它的孩子
2种分组方式:; 。使用分组,可以使位于同一个
组的所有图元的操作都相同
QGraphicsView:
是一个Widget,用于显示一个场景,提供滚动条功能和转换功能,可以缩放和旋转场景。
默认使用内建的2D画图引擎,可以使用OpenGL:在构造后,调用setViewport()
坐标系统:
使用3种坐标系统:viewport, scene, item
viewport: 位于QGraphicsView内部
scene: