QGraphicsScence Qt场景类
来源:互联网 发布:php 随机红包算法 编辑:程序博客网 时间:2024/05/17 22:26
QGraphicsScence类提供了一个管理大量2D图元的场景面。
这个类是作为QGraphicsItems的一个容器类, 它和QGraphicsView类一起使用,提供了图元可视化,例如线,矩形,文字,甚至是一些自定义的项,在一个2D的场景面上。QGraphicsScence是场景视图框架的一个部分。
QGraphicsScence也提供了功能,让你可以有效的确定item的位置,包括决定在场景的任意的地方是否可见等。和QGraphicsView 控件一起,你可以决定是否是整个场景可见,还是放大(zoom in)之后部分场景可见。
QGraphicsScene scene;scene.addText("Hello, world!");QGraphicsView view(&scene);view.show();
注意:QGraphicsScence本身没有可视的功能,它仅仅是能够管理items。你需要创建QGraphicsView 控件来可视化这个场景。
为了将item添加到场景中,你需要首先构造一个QGraphicsScence对象。然后,你有两个选择:要么通过调用addItem()添加已经存在的QGraphicsItem对象,或者你可以调用一些方便的接口:addEllipse(), addLine(), addPixmap(), addPolygon(), addRect(), addText(), 它都会返回一个指针,指向这些新添加的item.添加的这些item的维度尺寸是相对于item的坐标系统的,而且这些项的位置在场景中是初始化为(0,0)的。
然后你可以可视化这个场景通过QGraphicsView.当这个场景变化,(例如一个item移动或者转换)QGraphicsScence会发出changed()信号,通过调用removedItem()来移除一个item.
QGraphicsScence使用一个索引算法来高效的管理items的位置,通常默认使用BSP(Binary Space Partitioning)tree;一个适用大量场景的算法,通常他的大量items是保持静止的(也就是不移动的)。你可以通过调用setItemIndexMethod()来禁用掉索引。要了解更多的索引的算法,参见itemIndexMethod属性。
这个场景的外轮廓矩形通过调用setScenceRect()设置。Items可以放置在场景的任意位置,而且这个场景的位置默认是没有限制的,场景的rect 仅仅是用于内部的记录,保持场景的item的索引。如果这个场景的rect没有设置,QGraphicsScence将会使用包括所有item的轮廓区域,就像返回中的itemsBoundingRect(), 作为场景rect. 然而,itemsBoundingRect()是一个相对耗时的函数,因为任一个item的位置操作,都会需要他来重新收集每个item的位置信息,因此,一旦进行了大场景的操作,你就需要重新设置场景的rect.
QGraphicsScence的一个强大的功能之处在于它可以高效的管理item的位置,即使item的数量达到百万,items()函数可以在几毫秒内决定每个item的位置。这有好几个重载的items():
- 在固定的位置获取items;
- 在一个矩形或者多边形的位置周围查找items.
- QGraphicsScence Qt场景类
- 自制Qt Quick场景切换管理类
- Qt状态机场景模拟
- Qt状态机场景模拟-续
- OpenGL实现场景漫游(Qt版)
- Qt移动应用开发:场景切换
- Qt视图场景框架之SVG
- Qt视图场景框架之一些“坑”
- Essential Qt 第十六章 元素/场景
- Qt移动应用开发(五):场景切换
- Qt中GraphicsView/GraphicsScene加载osg时场景瞬移。。。
- Qt视图场景框架之仿射变换
- 类方法应用场景
- Cocos2dx 场景类-Scene
- 场景
- 场景
- 场景
- Ogre场景管理器SceneManager类
- Java NIO教程 Channel
- 自己所理解的指针
- 1
- Java中int,String,Integer之间如何互相转化
- AOP的实际应用
- QGraphicsScence Qt场景类
- Duilib vs调试程序加载资源失败,但是单独执行exe可以成功
- 编译器警告C4930
- 9.1数字三角形
- php 去除数组中的某个元素
- acpi event
- 关于OJ上STL库使用的一点经验记录
- Unity3D-关于动态生成的Button和ScrollView冲突的解决方案
- Python实现基本排序算法01