Qt 学习笔记--图形视图框架(一) 2010-07-11 07:40 优点:处理多个图元,单击,拖动,选择图元 架构:一个场景,多个图元位于其中,通过视图显示 主要应用: 绘图软件,显示地图软件 当使用没有变换的视图观察场景时,场景中的一个单元对应屏幕上的一个像素 图元坐标通常以图元中心为原点,X 轴正方向为向右,Y 轴正方向为向下 场景坐标的原点在场景中心,X 轴正方向为向右,Y 轴正方向为向下 视图坐标以左上角为原点,X 轴正方向为向右,Y 轴正方向为向下 所有的鼠标事件最开始都是使用视图坐标 场景:图元的容器 1.提供管理很多图元的接口 2.传播事件到图元中 3.管理图元状态,例如选择和焦点处理 4.提供非转换的绘制功能,主要用于打印 QGraphicsScene scene; QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 100, 100)); // 添加图元 QGraphicsItem *item = scene.itemAt(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:...