赞
踩
本文是 《Qt 框架性开发实践——组件实战篇》的第一篇。
本文所讲的内容已经开源,你可以在这个 Github 地址 找到源代码。
在本篇中,我们要实现一种类似 PPT 的演示工具——电子白板,与 PPT 一样,电子白板也可以按页面组织演示的内容,在演示中切换页面。但是,电子白板相对更灵活一些,没有固定的演示流程,你可以在演示中任意跳转到某个页面,也可以随意拖动,或者临时添加、删除、编辑白板里的某些内容。
我们先看一下白板页面的展示效果。
在这张图里面,白板页面容纳了多种多样的内容(也称为资源),比如图片、声音、视频,网页,也有文字、几何图形。
我们还可以扩展更多的资源类型,让他们在白板中展示出来。但是,我们得现实现一个白板的框架,然后才能添加具体的资源展示模块。
白板框架包含哪些东西呢?
从基础到用户界面,应该主要有下面这四部分。
最基础的“系统层”,需要实现对资源文件数据的访问、缓存。一般通过 HTTP 访问后端文件服务,将文件缓存在本地 LRU 存储中(UrlFileCache),提高重复使用的效率。信息服务是用来实现远程演示的操作同步(此时还没有实现)。
中间的“数据层”,则是实现对演示内容数据的管理。一个演示的所有内容通过一个“包”(ResourcePackage)来组织,包里面包含若干个页面(ResourePage),页面里面包含的就是各种资源了(Resource)。这里还有一个叫做资源视图(ResourceView)的类,它是用来直观的在内存中表示资源的各种属性、数据,方便操作。
再上面的“展示层”,则是实现对演示资源的展示,其实与数据层对应的。整个演示位于画布中(WhiteCanvas),一个画布同时只能展示一个包。画布位于的场景是类似 Qt 的 QGraphicScene 的概念。画布中包含的一个图层(PageCanvas)可以容纳一个演示页面,会有多个图层(后面会介绍具体有哪些图层)。然后就是资源对应的控件(Control)了,控件就是用来展示资源的。当然,不同类型的资源会用不同的类型控件来展示。
最后的“交互层”,就是实现通常的演示交互了。一般针对某个资源的交互有:上下文菜单,选中后操作(平移,缩放,旋转),以及具体资源相关的编辑操作。针对页面,则主要是页面切换操作。对于画布,还有画布的平移,缩放操作,以及场景的小窗、全屏切换。
以上就是实现电子白板需要搭建的基本框架了,我们会重点介绍与这里面几个与 Qt 相关的开发技术,至于与 Qt 不太相关实现细节,则不准备详细分析,需要了解具体的实现代码可以按照上面类型名称在代码仓库中寻找。
列一下实现电子白板所使用的关键 Qt 技术:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。