QT平台下基于XML的界面设计与管理(下)
接上篇
3 界面的实现与管理
图1(103页)所示为基于xml生成界面的大体流程,由 于本文选用pugixml库进行操作,因此在配置、加载以及修 改界面元素时均使用pugixml库的基本操作方法,下面详细 介绍。
3.1 使用pugixml库配置
本文使用pugixml库进行参数配置。具体方法如下:首 先对pugixml进行配置,pugixml的三个文件,可以只include 头文件pugixml.hpp,CPP文件不用放到项目中,方法是, 在pugiconfig.hpp中:#define PUGIXML_HEADER_ONLY和
#include "pugixml.cpp",将这两行的注释去掉即可。另外,如 果项目使用的是Unicode设置,则可以在pugicon句g.hpp中:
#define PUGIXML_WCHAR_MODE将wchar模式打开即 可。
对 界 面 进 行 参 数 配 置 , 即 x m l 节 点 读 取 , 如 x m l 文 件
图5 修改XML参数配置
params.xml:
图6 修改后生成界面
2)修改:可以通过pugixml提供的函数修改文档结构或
修改节点、属性的数据,这些函数负责管理内存和结构的完 整性,因此操作之后总能保持树结构的有效性。然而,也有 可能创建一个无效的XML树(例如,添加两个相同名字的属 性或设置属性/节点的名字为无效的字符串)。对于属性的修 改,内存消耗和性能都是经过优化的,如果你有足够的内 存从头开始创建文档,稍后在保存它们到文件比起手写xml 文本没有太大的开销。所有改变节点/属性数据或结构的成 员函数都是非const的,因此不能在const类型的句柄上调用 它们。然后你可以轻易地转换const型句柄到非const型,仅 需要一个赋值操作,例如void foo(const pugi::xml_node& n) { pugi::xml_node nc = n; },因为常量的准确性在这里主要提供 作为参考文档而已。
图5、6为将XML参数修改之后的参数配置及其重新生 成的界面,和图2、3、4进行对比,可以看出,我们 将“设 备1”-“设备5”的名称变更为“设备更新1”-“设备更新
5”,在界面有新的显示,以此类推,通过访问XML文件实 现对界面的管理。
4 结束语
本文讨论的QT平台下利用XML技术进行界面的设计和 管理,主要利用pugixml库进行XML文件的具体操作,最终 成功生成界面。因此证明,基于XML 的用户界面管理系统 为软件开发提供了有效且有力的支持,通过该系统不仅可以 使用户界面描述信息与功能实现代码相分离,简化用户界面 的开发与维护,提高界面的开发效率,还可以使软件的最终 用户获得与开发人员相同的界面操控能力,在系统运行前和
运行过程中对用户界面进行配置和管理等操作。
评论