




已阅读5页,还剩79页未读, 继续免费阅读
(计算机应用技术专业论文)基于qt的插件平台设计与实现以及在物探领域的应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南交通大学硕士研究生学位论文第l 页 摘要 随着计算机软件技术的不断发展,软件体系结构和开发方式也在发生着 重大改变。为了能使程序编制人员高效率地进行软件开发,研发出质量高、 扩展性强、便于维护的软件产品,人们一直在探索更好的软件体系结构和开 发方法。基于插件式的软件体系结构的出现,为解决上述问题提供了路径。 目前,插件式的软件体系结构和开发方法正得到越来越多的应用,已经有很 多成功的软件产品采用此种体系结构。 当前在地球物理勘探领域基于资料解释的软件众多,功能分散并且难于 管理,本文以物探领域资料解释软件为对象,主要设计和实现了插件平台系 统,此系统采用c + + 程序语言开发,其中运用q t 所支持的图形界面类库来处 理软件表示层的窗体控制和图形绘制。系统借鉴e c l i p s e 微内核体系结构, 通过对插件平台的关键技术的研究,实现了适应于物探领域的插件平台系统。 最后通过对地震数据可视化插件的实现,并成功地装配到插件平台中,证明 了此技术的可行性与实用性。 实践证明,基于插件式的软件体系结构是一种非常灵活的组件式结构, 它把程序的功能分散到各个插件中来实现。插件是可独立开发的程序模块, 它能够动态地插入到平台中,并且可以被自由地安装、卸载和升级。因此它 能够提高软件开发的并行性和开发效率,降低设计开发难度,缩短开发周期, 增强应用程序的可运行性、可扩展性和可维护性。 关键词:插件平台:q t :插件;接口 a bs t r a c t w i t ht h ec o n t i n u o u sd e v e l o p m e n t o fc o m p u t e rs o f t w a r et e c h n o l o g y , s o f t w a r e a r c h i t e c t u r ea n dd e v e l o p m e n tm e t h o d sa r e a l s om a j o rc h a n g e s p r o c e d u r e sf o r s t a f fi no r d e rt oe n a b l ee f f i c i e n ts o f t w a r ed e v e l o p m e n t ,r e s e a r c h a n dd e v e l o p m e n t o fh i g h q u a l i t y , s c a l a b i l i t y ,a n de a s eo f m a i n t e n a n c eo fs o f t w a r ep r o d u c t s ,1 th a s b e e ne x p l o 渤g b e t t e rs o f t w a r ea r c h i t e c t u r ea n dd e v e l o p m e n m e h o d o l o g y t h e e m e r g e n c eo fp l u g - i ns o f t w a r ea r c h i t e c t u r ep r o v i d e s ap a t ht os o l v et h e s el s s u e s a tp r e s e n t ,t h ep l u g i ns o f t w a r e a r c h i t e c t u r ea n dd e v e l o p m e n tm e t h o d o l o g y l s b e i n ga p p l i e dm o r ca n dm o r e ,a n dm a n y s u c c e s s f u ls o f t w a r ep r o d u c sh a v eu s e d s u c ha r c h i t e c t u r e i nt h eg e o p h y s i c a li n t e r p r e t a t i o na r e a ,t h e r e a r em a n ys o 跚a r e s ,1 tc a u s e m a ta r e a so ff u n c t i o n a ls c a t t e r e da n dd i f f i c u l t t om a n a g e ,t h i s 叭1 c l ee x p l a l n e d t ot h e 位l do fg e o p h y s i c a l t a r g e tp l a t f o r m s o f t w a r ep l u g 。m s ,p l u g m t e c h n o l o g y b a s e d s o f t w a r e a r c h i t e c t u r ed e s i g n t h i ss y s t e m u s e sc 十 十 p r o g r a 衄i n g1 a n g u a g ed e v e l o p m e n t ,w h i c hs u p p o r t e d t h eu s eo fq tg r a p h l c a l i i l t e m c e1 i b r 叫t oh a n d l et h es o f t w a r el a y e rt h a tf o r mt h ec o n t r o l 锄d 铲印n l c s r e n d e r i n g e c l i p s es y s t e mf r o mm i c r o - k e r n e la r c h i t e c t u r e ,p l u g 。i np l a t f o 锄o t k e vt e c h n o l o g i e st 0r e a l i z et h ea d a p t a t i o ni n t h ef i e l do fg e o p h y s l c a lp l a t f o 皿 s v s t e mp l u g i n s f i n a l l y , v i s u a l i z a t i o n o fs e i s m i cd a t a t 0a e l l l e v ep l u g 锄d s u c c e s s 如1 l y 触e d t om ep l u g i np l a t f o r m t o p r o v e t h ef e a s i b i l i t yo f t h i s p r a c t i c eh a sp r o v e dt h a tp l u g i np l a t f o r m - b a s e da r c h i t e c t u r e i sav e r yn e x l b j e c o 踯o n e n t b a s e d s t r u c t u r e p l u g i n s c a nb ed e v e l o p e di n d e p e n d e n tp r o g r 锄 m o d u l e s ,、油i c hc a nb ed y n a m i c a l l yi n s e r t e di n t ot h ep l a t f o r m ,a n d c a nb e 行e e o u n i n s t a l la n du p g r a d e t h e r e f o r ei tc a ni m p r o v e t h es o t h r c a r ed e v e l 叩m e n t 缸dt n e d e v e l o p m e n to fp a r a l l e l e f f i c i e n c y a n dr e d u c et h ed i f f i c u l t y o fd e s l g n 吼d d e v e l o p m e n t ,s h o r t e nt h ed e v e l o p m e n t c y c l e ,a n de n h a n c et h ea p p l i c a t l o n t om n a n dt e s t a b i l i t ya n dm a i n t a i n a b i l i t y 西南交通大学硕士研究生学位论文第l li 页 k e yw o r d s :p l a t f o r mp l u g i n s ;q t ;p l u g i n ;i n t e r f a c e 西南交通大学囱南父遗大罕 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学 校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查 阅和借阅。本人授权西南交通大学可以将本论文的全部或部分内容编入有关 数据库进行检索,可以采用影印、缩印或扫描等复印手段保存和汇编本学位 论文。 本学位论文属于 1 保密口,在年解密后适用本授权书; 2 不保密d 使用本授权书。 ( 请在以上方框内打“4 ) 学位论文作者签名:矾、乜明指导老师签名: 日期:z q 、g 日期: 西南交通大学学位论文创新性声明 本人郑重声明:所呈交的学位论文,是在导师指导下独立进行研究工作 所得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体, 均已在文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。 本学位论文的主要创新点如下: 1 、采用基于c + + 的面向对象技术,实现了基于资料解释的插件平台系统, 此插件平台是一个能够管理插件及扩展性强的系统。插件平台系统的实 现解决了目前地震资料解释软件功能分散、难于管理、缺乏统一规范以 及难于重复利用的诸多问题。 2 、实现基于插件技术的地震数据可视化系统,地震数据可视化是地球物 理勘探行业的一个基础,但当前一些软件在某些显示方法,存在一定的 问题,通过对可视化插件的实现与研究,一方面验证了插件平台的可行 性,另一面为资料解释人员提供各种高质量的图形显示。 弥世目同 7 刃 君 西南交通大学硕士研究生学位论文第1 页 1 1 课题背景 第1 章绪论 地球物理勘探技术自从在石油工业界得到应用以来,始终处于不断改进 和飞速发展的过程之中。特别是近二十多年来,随着电子技术、计算机技术、 信息技术等相关学科的飞速发展,地震勘探技术已从模拟发展到数字,从最 初的一维勘探到现在的三维乃至四维勘探,从单分量接收到多分量接收,从 地面勘探到立体勘探,从简单的构造勘探到寻找隐蔽岩性油气藏。随着地球 物理勘探技术向着提高复杂地区油气勘探能力的方向发展,以及向着油气田 开发领域的渗透,勘探和描述油藏的能力与精度都得到了很大的提高。 软件作为i t 技术应用的核心,其重要性日渐突出。进入2 1 世纪以来, 伴随着地球物理勘探行业迅速发展,产生大量的行业软件需求。 随着石油勘探领域业务的不断拓宽以及应用的深入,提高工作效率,缩 短研制周期,合理利用资源,降低研制成本,满足性能指标要求,必然越来 越明确地成为石油勘探的目标。如何快速且高质量地开发出满足不同任务需 求的石油勘探软件,成为石油勘探行业面临的一个问题。 1 2 物探领域应用软件发展现状 通常情况下,物探领域应用软件系统由数据采集系统、数据处理系统、 地震资料解释系统组成。在这三大系统中,地震资料解释是整个地球物理勘 探的核心,其精度直接影响到勘探效益。 地震资料解释通常是指根据采集来的数据信息确定地质构造形态和空间 位置,推测地层岩性、厚度及层间接触关系,确定地层含油、气、煤等资源 的可能性,为工作面顺利回采提供地质保障。 近几年来,随着计算机技术的发展,地震资料解释技术取得了很大的进 步,其进展主要表现在交互三维构造解释、断层分析、地震反演、地震属性 分析、三维可视化、地质建模等方面,它大大提高了对复杂构造、地层、岩 西南交通大学硕士研究生学位论文第2 页 性圈闭的解释和描述能力及精度。 伴随着地震资料技术的发展,出现了大量基于地震资料解释的软件需求, 这些软件需求包括心1 : l 、可视化解释 ( 1 ) 资料显示,可视化技术可以把资料显示由传统的2 d 、彩色、静态领 域拓展到3 d 、真实感、动态领域。可以把多种资料综合显示到3 d 空间分析 它们的关系。 ( 2 ) 用解释结果进行地质3 d 模拟。 ( 3 ) 地质和地球物理过程的仿真模拟。 2 、地震反演 地震反演分为合成声波测井( 常规递推反演) 、约束反演( 如p a r m 、r o v i m 等) 、宽带约束反演等。 3 、多属性体联合解释 ( 1 ) 构造解释。相干分析,包括相关系数、方差体等其他几何属性。 ( 2 ) 地震相分析和储层预测。 ( 3 ) 油气检测。利用叠前叠后属性信息进行含油气判识。 4 、裂缝预测 5 、地质综合研究 6 、油藏建模 ( 1 ) 测井数据的处理分析。 ( 2 ) 合成地震道。 ( 3 ) 井资料处理解释。 ( 4 ) 地质建模。 ( 5 ) 随机建模。 ( 6 ) 统计建模。 将来随着地震资料解释技术的继续发展还会出现新的资料解释软件功能 需求。 西南交通大学硕士研究生学位论文第3 页 1 3 需解决的问题 当前地震资料解释软件面临的问题主要有: l 、需求多样化且不确定 地震资料解释所用到的数据格式多变、标准多变。涉及到的数据包括地 震数据、界面集合( 网络、等值线、交点等) 、井的数据、图件数据、子波、 岩性代码、层位数据等。除s e g y 地震数据外,其他数据格式尚没有统一的格 式。这就造成面对不同格式的同一类型数据时,需要编写重复的软件。 2 、节约软件研发成本,减少维护的成本 ( 1 ) 从地震资料解释软件的需求中可以看出需求很多,很庞大。对于庞大 的系统的研发,如果把需求中的所有功能都研发完毕后,产品才发布,那么 整个研发周期会非常漫长,产品的研发成本也变得非常高。如何在保证软件 质量的情况下尽可能的缩短研发周期,即使在人力和资源不充分的情况下, 在软件的研发周期内能否将软件的主要功能开发出来,其他的不重要的功能 留在以后通过补丁包的形式进行增加,保证产品的及时上市,收回软件的研 发成本。甚至在公司人力资源不充分的情况下通过与第三方的厂商进行合作, 帮助开发出部分的功能。在与第三方厂商合作的时候,第三方厂商不需要知 道源代码,只需遵循制定的开发标准,功能就可以被加载。 ( 2 ) 延长软件的生命周期,避免二次开发。延长软件的生命周期可以有效 的降低软件开发的成本。有效的延长生命周期,就必须要求软件的结构非常 灵活,便于修改与升级维护。软件产品只有具有灵活的结构,才能对产品在 发展过程中出现的新的需求及时的处理,增强软件在新的环境下的适应性。 一个僵化的结构将会使软件的升级与维护变得非常复杂,无法适应不断变化 的环境,最后只有重新开发,增加了软件开发与维护的成本。 ( 3 ) 可以为地震资料解释软件的开发提供可复用的模块。软件复用是提高 软件开发效率,缓解软件危机的有效方式,通过提供大量可复用的功能模块 可以有效的缩短研发周期,节约软件的成本。 传统的软件体系结构在解决软件的需求不确定以及在复杂高的软件项 目的开发上显得力不从心,灵活性与可扩展性都不够,所以我们需要去寻找 一种新的软件架构来帮助软件的研发。 西南交通大学硕士研究生学位论文第4 页 1 4 解决方案 为了提高软件需求和软件设计的质量,软件工程界提出了需求分析工程 技术和各种软件建模技术h 3 。但是在需求与设计之间仍存在一条很难逾越的 鸿沟,即缺乏能够反映做决策的中间过程,从而很难有效地将需求转换为相 应的设计。为此,软件体系结构概念应运而生,并试图在软件需求与软件设 计之间架起一座桥梁,着重解决软件系统的结构和需求向实现平坦地过渡的 问题。 在传统的软件实现技术中,软件的功能在开发过程中就已经预先设定完 毕,为了解决软件发布之后用户提出的新需求,开发人员不得不对软件源代 码不断增加、修改以满足需求的不断变化,这种调整的工程复杂度和工时成 本均很大,工程的完成日期不能得到保证,而且影响了整个软件的稳定性, 增加了软件的研发成本。因此,需要采用新的可扩展的软件构造技术设计软 件。大家所熟悉的e c l i p s e 、w i n a m p 、p h o t o s h o p 等软件都采用了插件技术, 这为实现地震资料解释软件的设计提供了一种良好的参考模式。 我们首先研发一个类似于e c l i p s e 功能的插件平台,然后把地震资料解释 功能划分成许多插件来实现,最后把这些功能插件加入插件平台中。 这种插件+ 平台的软件设计方法最主要的特色在于其可扩展性、灵活性和 易维护性,在地震资料解释技术领域引入插件的思想将有助于问题的解决, 使其能够适应将来发展的需要,解决1 3 节中提出的相关问题。 1 5 论文的组织 本论文的组织结构如下: 第l 章绪论 介绍了插件平台技术产生的背景与需求。随后以物探领域解释软件的需 求为背景,提出了面临的主要问题。为了解决这些问题,文章中提出了使用 插件平台技术的解决方案。 第2 章基础技术研究 在这一章中主要对插件架构技术和q t 开发技术进行基础理论的研究,在 插件架构技术中介绍了插件的组成与优点等。最后介绍了q t 的核心技术,包 西南交通大学硕士研究生学位论文第5 页 括信号与槽机制、国际化等。 第3 章基于资料解释的插件平台的设计 首先对平台系统做了需求分析,然后又对整个平台的总体设计做了介绍。 最后对插件平台的三大功能内核服务功能、数据服务功能以及平台u i 界面 要点做了详细的分析。 第4 章地震数据可视化插件研究与实现 地震数据可视化显示是地球勘探领域的一个重要部分,本章对地震数据 的二维显示技术进行了详细的分析,并对当前二维显示的一些难点提出了自 己的思想。此插件实现了二维地震数据各种图形的显示,包括波形显示、变 面积显示以及彩色显示等。通过对此插件实现,一方面实现了地震数据的二 维可视化,另一方面验证了插件平台系统的可行性。 西南交通大学硕士研究生学位论文第6 页 第2 章基础技术研究 在第l 章中,提出了插件+ 平台的软件体系结构,本章将对插件体系结 构以及跨平台框架q t 相关内容研究。 2 1 基于插件技术的软件架构 插件是一种遵循一定规范的应用程序接口编写出来的程序。插件的本质 在于不修改程序主体( 平台) 的情况下对软件功能进行扩展与加强,当插件 的接口公开后,任何公司或个人都可以制作自己的插件来解决一些操作上的 不便或增加新的功能,也就是实现真正意义上的“即插即用软件开发 们。 2 1 1 插件技术概述 基于插件技术的软件体系结构的开发方法,是一种程序设计技术,是一 种面向组件的软件开发方法。在插件结构的应用系统中,程序并不是单一的 执行文件,而是由主程序和若干外部模块组成。这些模块是按照一定的规则 编写,可以通过配置文件灵活地加入到系统中,也可以在程序运行时动态地 加入到系统中。由于可以灵活机动地增加减少这些模块,通常把插入到系统 中的模块称为插件,而基于插件的系统称为插件系统或者插件平台系统。在 插件系统中,插件管理程序可以通过一定的规则和特定的接口与插件通信以 及调用插件实现的功能。与一般的函数调用不同,插件系统与插件是相对独 立的,插件系统可以脱离具体的插件模块而独立运行,插件也是实现特定功 能的相对独立模块,插件系统可以在运行的过程中动态调用多个不同插件所 提供的服务。 与传统的软件体系结构的一个程序集成所有功能不同,插件体系结构将 所有的业务功能放在外部插件中,插件管理程序中仅仅包含组织协调和调用 插件的功能,所以软件的功能就不像传统的那样固定不变。而且由于这种方 法的方便和灵活性,能够通过插入和改变外部插件来实现软件功能的扩充和 改进提高,这也是插件体系结构开发方法的魅力所在。 西南交通大学硕士研究生学位论文第7 页 图2 1 显示传统的软件体系架构,整个应用程序被划分为若干模块,并 且应用程序集成了所有的功能模块。 图2 1 传统软件体系结构 图2 2 显示基于插件技术的软件体系结构。所有的业务功能有插件实现, 然后插入插件平台系统中,平台只负责对插件的管理。 图2 - 2 插件体系软件结构 2 1 2 插件平台的构成 插件平台结构一般包括以下三个部分:宿主程序、插件、接1 2 1e 7 1 。其关系 如下图2 3 所示。 西南交通大学硕士研究生学位论文第8 页 图2 3 插件结构示意图 1 、宿主程序 w i n d o w s 平台上一般表现为一个可执行的文件( 一般为e x e 文件) 【8 1 ,这 个可执行文件负责启动整个系统,将插件系统所需的插件加载到自己的进程 地址空间中,插件系统所需要的插件是一些服务性的插件,常驻进程之中。 宿主程序还必须对插件进行管理,不同产品的服务性插件的设计都不完全相 同,但是对插件进行管理的功能是一定要实现的。 2 、插件 能够动态地插入到系统中,提供给插件系统相对简单的功能,但是多个 插件能够使系统功能完善,完成许多复杂功能的处理,是插件系统的重要组 成部分。在插件中必须提供给宿主程序调用的接口,当宿主程序需要调用插 件的时候能够找到这个接口,以完成与宿主程序的通讯与交互,并且使得宿 主程序能够得到插件的相关信息【9 1 。 3 、插件接口 宿主程序和插件能够互相结合在一起工作,必须有一套互相协作的规则 和协议来使不同来源的程序互相协调工作,完成这些规则和协议的部分称为 插件系统的接口。这是一个逻辑上的接口,由宿主程序和插件各完成一部分, 它们共同完成插件的插入、调用、停止以及宿主程序与插件以及插件与插件 之间的交互【10 1 ,是插件系统中的重要组成部分。 西南交通大学硕士研究生学位论文第9 页 2 1 3 插件技术优点 与传统的软件体系结构相比,基于插件技术的软件体系结构的中,插件 管理程序( 即插件平台程序) 与插件程序之间划分十分清楚,插件管理程序负 责插件管理,具体讲它只负责处理与插件的通信与调用插件的功能,而与具 体业务功能相关的算法以及数据结构等则由插件模块来完成,采用这种方式 使得各个插件之间几乎没有什么联系和干扰,降低插件模块之间的耦合度, 减少插件之间的依赖【l 。采用这种技术,当完成软件的设计后,插件管理程 序和各个插件程序可以完全独立开发,这有利于在大规模软件开发过程中, 使开发能够并行进行,提高开发的效率和质量。并且在开发和调试过程中, 当部分插件模块发生问题的时候,由于各个插件模块之间相对独立,并不会 影响到其他模块,有利于软件测试工作的开展和进行,便于在测试和调试的 过程中发现问题然后解决问题。另外,对部分插件的修改,不会影响到其他 插件,避免了因为改正错误而引出新的问题的情况。 插件体系结构的开发方法,给程序开发人员带来了灵活性,在主要模块 完成后就可以正式发行,不必等到整个开发过程的全部结束。在软件发布以 后还可以添加新的插件和完善已有的功能。这样,大大缩短了软件的开发周 期,这样可以节省出传统的软件体系结构和开发方法开发出的软件在维护阶 段所需要投入的人力,物力和财力,集中力量与资源到新产品的开发当中。 同时插件甚至可以交给第三方公司开发,提高行业内的合作能力,达到优势 互补的目的【1 2 】。插件开发完成后,也可能被其他的应用程序用到,提高了软 件的可重用性。 因此,在现代软件业向规模化产业化发展的时候,插件程序体系结构和 开发方法具有巨大的优势和潜力【l 3 1 。 2 2 基于q t 的软件研发技术基础 q t 是一个跨平台的c + + 图形用户界面库,由挪威t r o l l t e c h 公司出 品,是开源的桌面系统k d e 的基石。g o o g l ee a r t h ,s k y p e ,o p e r a ,a d o b p h o t o s h o pe l e m e n t s ,p e r f o r c ev i s u a lc l i e n t 等软件都是基于q t 写成n 4 1 。 和j a v a 的“一次编译,到处运行 跨平台不同,q t 是源代码级的跨平台, 一次编写,随处编译,一次编写的q t 应用程序可以移植到不同的平台上,只 西南交通大学硕士研究生学位论文第1 0 页 需要重新编译即可运行n 引。 基本上,q t 同xw i n d o w 上的m o t i f , o p e n w i n ,g t k 等图形界面库 和w i n d o w s 平台上的m f c ,o w l ,v c l ,a t l 是同类型的东西,但是q t 具有下列优点: l 、优良的跨平特性 q t 支持下列操作系统:m i c r o s o f tw i n d o w s9 5 9 8 ,m i c r o s o f tw i n d o w sn t , l i n u x ,s o l a r i s ,s u n o s ,h p - u x ,d i g i t a lu n i x ( o s f 1 ,t r u 6 4 ) ,i r i x ,f r e e b s d , b s d o s ,s c o ,a i x ,o $ 3 9 0 ,q n x 等等。 2 、面向对象 q t 的良好封装机制使得q t 的模块化程度非常高,可重用性较好,对于 用户开发来说是非常方便的。q t 提供了一种称为s i g n a l s s l o t s 的安全类型 来替代c a l l b a c k ,这使得各个元件之间的协同工作变得十分简单。 3 、丰富的a p i q t 包括多达2 5 0 个以上的c + + 类,还替供基于模板的c o l l e c t i o n s , s e r i a l i z a t i o n ,f i l e ,i o d e v i c e ,d i r e c t o r ym a n a g e m e n t ,d a t e t i m e 类。甚 至还包括正则表达式的处理功能。 4 、支持2 d 3 d 图形渲染,支持o p e n g l 5 、大量的开发文档 6 、x m l 支持 2 2 1 关键技术 1 、q t 对象模型 标准c + + 对象模型对对象范式的支持十分的高效,但它在某些方面仍表 现一定的不足。g u i 编程不但要求程序运行时的高效,而且更需要软件的灵 活性。q t 编程语言结合了q t 对象模型的灵活性以及标准c + + 的高效性。 q t 对象模型中大部分特征都是通过标准c + + 技术实施的。其他的一些特 征( 例如:对象通信机制) 需要q t 自身提供的元对象编译器( m e t a o b j e c t c o m p i l e r , 简称m o c ) 的支持,也就是说m o c 专门处理q t 对标准c + + 扩展的部 分。 q t 的元对象基于以下三点: ( 1 ) 基类的继承,任何使用元对象系统功能的类必须继承q o b j e e t 类; ( 2 ) q _ o b j e c t 宏,q o b j e c t 宏必须出现在类的私有声明区,以便能启 西南交通大学硕士研究生学位论文第11 页 动元对象的特征; ( 3 ) 元对象编译器,为q o b j e c t 子类实现元对象特征提供必须的代码实现。 2 、信号与槽机制 信号和槽用于对象之间的通信,信号槽机制是q t 核心特色,它是区分 其他开发工具的重要部分。 在传统的g u i 用户界面中,当用户操作一个窗口部件( 控件) 时,需要其 他窗口部件的响应或者能激活其他的操作,在程序开发中,经常使用回调 ( c a l l b a c k ) 机制来实现,所谓回调,就是事先将一个回调函数( c a l l b a c k f u n c t i o n ) 指针传递给某一个处理过程,当这个处理过程得到执行时,回调预 先定义好的回调函数以激活其他处理过程的目的。在q t 中,信号与槽代替了 这些繁杂的函数指针。 信号是一个特定的标识别,当一个对象的状态发生变化时,该对象就发 出事先定义好的信号,只有当一个类定义了信号后,它和它的子类所派生的 对象才能发送该信号。当一个信号发送以后,与之相关联的槽立即被执行。 一个槽就是一个函数,与一般函数不同,槽函数既能和信号关联,也可以象 普通的函数一样被调用。在程序中,使用q o b j e c t :c o n n e c t ( ) 函数将某个信号 和某个槽关联,而槽和信号之间的真正的关联是由q t 的信号和槽机制来实现 的。 信号与槽关联可以有以下几种模式n 5 1 : ( 1 ) 一个信号和一个槽关联; ( 2 ) 一个信号和多个槽关联; ( 3 ) 多个信号和一个槽关联: ( 4 ) 信号和信号关联。 图2 4 展示了信号与槽的关联。在图中一共有3 个对象,分别是:o b j l 、 o b j 2 、o b j 3 。每个对象声明了一个槽函数和一个信号。其中,通过建立 c o n n e c t ( o b j l ,s i g l ,o b j 3 ,s i 9 1 ) 关联函数,把o b j l 对象与o b j 3 对象建立信 号与信号关联;通过c o n n e c t ( o b j l ,s i g l ,o b j 2 ,s l o t l ) 关联函数,把o b j l 对 象和o b j 2 对象建立信号与槽的关联;通过c o n n e c t ( o b j 2 ,s i g l ,o b j 3 ,s l o t l ) 关联函数,把o b j 2 对象和o b j 3 对象建立信号与槽的关联。 西南交通大学硕士研究生学位论文第12 页 c o n n e c t ( o b j i ,s i g l ,o b j 2 ,s l o t l ) 图2 4 信号和槽关联 q t 中采用信号和槽机制具有以下优点: l 、类型安全 需要关联的信号和槽的签名必须是等同的,即信号的参数个数和同接受 该信号的槽的参数类型和参数个数必须相等。 2 、松藕合 q t 信号和槽机制减弱了q t 对象的耦合度。激发信号的q t 对象无须知道 是哪个对象的哪个槽接受它发送的信号,它只需要做的是在适当的时间发送 适当的信号就可以了,而不需知道也不关心它的信号有没有接受到,更不需 要知道是哪个对象的哪个槽接受到了信号;同样的,对象的槽也不知道是那 些信号关联到自己。 2 2 2 国际化 q t 的国际化使软件更有效的被全世界用户使用。这也就意味着软件要适 应不同的用户语言、字符编码等因素。 1 、q t 国际化的改进 ( 1 ) 对所有用户可见的文本采用q s t r i n g 由于q s t r i n g 内部使用u n i c o d e 编码,对世界上所有的语言都可以用相似 的文本处理操作。同时,q t 中所有显示的文本函数都可以直接以q s t r i n g 作 为参数。 西南交通大学硕士研究生学位论文第13 页 对于程序中其他部分的字符串,例如q o b j e c t 的名字,不必非要使用 q s t r i n g ,传统的c h a r * 就足够了。 ( 2 ) 对所有将被显示的文本使用t r o 函数 当程序引用需要显示的文本时,为了能保证使用q t r a n s l a t o r 类,通常使 用t r o 。例如在q f r a m e 对象中声明一个标签: q l a b l e 木l a b e l = n e wq l a b e l ( t r ( n a m e ”) ,t h i s ) ; 当被引用的文本串不在q o b j e c t 子类的成员对象中,则要使用适当类的 t r o 成员函数,或者直接使用q a p p l i c a t i o n :t r a n s l a t e 0 ; v o i df u n c t i o n ( q w i d g e t 木w i d g e t l q l a b e ll a b e l = n e wq l a b e l ( q w i d g e t :t r ( n a m e ”) ,w i d g e t ) ; 或者: q l a b e ll a b e l = n e wq l a b e l ( q a p p 一 t r a n s l a t e ( “q w i d g e t , n a m e ”) ,w i d g e t ) ; ) 2 、q t 国际化翻译过程 q t 国际化翻译过程分为以下三个步骤: ( 1 ) 在q m a k e 文件中加入指令 q m a k e 文件是程序源代码文件编译前的配置文件( 一般后缀为p r o ) , 这个配置文件的信息包括需要编译的文件名称、依赖项等。要实现国际 化需要在q m a k e 文件中加入关键字t 耻州s l a t i o n s 指明翻译的语言文 件名称,例如在q m a k e 文件中加入 t r a n s l a t i o n s = m a n a g e r f i l e z h c n t s 通常在语言文件的后面加上区域代码,以便区分,例如中文区域代 码为z hc n 。 ( 2 ) 使用l u p d a t e 生成翻译文件 在我们的源代码都编写完成后,并且配置好q m a k e 文件后,便可以 利用l u p d a t e 命令生成翻译文件。l u p d a t e 读取q m a k e 文件,从指定的源 文件和界面文件中寻找需要翻译的字符串,并产生t s 文件。产生的t s 文件是一个标准的x m l 文件,我们可以打开此x m l 文件,并填入相应的 翻译文字。 h o r i z o n m a n a g e r 西南交通大学硕士研究生学位论文第1 4 页 l o a d i n g 正在加载 ( 3 ) 使用l r e l e a s e 生成二进制文件 l r e l e a s e 命令用于读取q m a k e 文件,并产生q m 文件,其中每个t s 文件对应一个q m 文件,q m 文件是一个二进制文件,查找以及读取速度 非常快,在程序运行时使用此文件。 当完成以上三个步骤后,就可以加载翻译文件q m 了。程序加载翻译文 件有两种方式: 第一种采用硬编码方式,指定加载语言,其代码如下: q a p p l i c a t i o na p p ( a r g c ,a r g v ) ; q t r a n s l a t o rt r a n ; t r a n 1 0 a d ( q m 文件) ; a p p i n s t a l l t r a n s l a t o r ( & t r a n ) ; 第二种方式采用自动判断当前的l o c a l e ,然后再装入相应的翻译文件, 其代码如下: q a p p l i c a t i o na p p ( a r g c ,a r g v ) ; q s t r i n gl o c a l e = q l o c a l e :s y s t e m ( ) n a m e ( ) ; q t r a n s l a t o rt r a n ; t r a n 1 0 a d ( 不含q m 文件后缀+ l o c a l ) ; a p p i n s t a l l t r a n s l a t o r ( & t r a n ) ; 2 2 3 开发环境 由于q t 是一个跨平台的应用程序框架,它可以在不同的操作系统上进行 编译,由于操作系统之间机制不同,在不同操作系统上编译q t 也有一些不同 处。在w i n d o w s 系列平台,由于工具比较多,编译q t 相对容易,本文以l i n u x 操作系统、q t 开源版4 2 2 为例讲述q t 编译过程。 1 、从官方网站上获取源代码。可以从t r o l l t e c h 公司的邱上载各个版本 的开源版q t ,地址是:邱:邱t r o l l t e c h c o m q t s o u r c e 。本文下载的是版本是 4 2 2 ,其文件名称为q t x 1 1 - o p e n s o u r c e s i c 一4 2 2 t a r g z 。 西南交通大学硕士研究生学位论文第15 页 2 、解压缩源代码文件包。操作命令如下: t a rx v f zq t x l1 - o p e n s o u r c e s r c 4 2 2 t a r g z 3 、生成m a k e f i l e 文件,运行c o n f i g u r e 命令便可生成m a k e f i l e 文件。 4 、编译,通过命令m a k e ,便可编译。由于q t 源文件比较多,编译的时 间比较长,在本人双核1 6 6 g h z ,内存2 g 的计算机上进行编译,时间为1 小时左右。 5 、编译完成以后,便可以安装q t 开发库,以及一些辅助工具。通过命 令m a k ei n s t a l l 便开始安装q t ,q t 默认安装路径为u s r l o c a l t r o l l t e c h q t 4 2 2 目录下。 6 、为了能方便的使用q t ,可以在用户启动的文件中设置相应的环境变量。 例如在b a s hp r o f i l e 中加入: e x p o r tq t d i r = u s r l o c a l t r o l l t e c h q t 4 2 2 指定路径 e x p o r tq t i n c = u s r l o c a l t r o l l t e c h q t 4 2 2 i n c l u d e 头文件路径 e x p o r tq t l i b = u s r l o c a l t r o l l t e c h q t 4 2 2 l i bn 库路径 e x p o r tp a t h = $ q t d i r b i n :$ p a t h 可执行文件路径 q t 程序编译是一个复杂的过程,当我们编写完q t 程序时,需要对这些 程序进行编译。在编译q t 程序前,需要先配置编译文件,编译文件后缀为p r o , 这个文件配置了编译的选项,定义的常用关键字有: l 、t e m p l a t e :生成何种形式的m a k e f i l e 文件,q t 定义的有以下几种模 版:( 1 ) 应用程序a p p ,建立一个q t 应用程序,即可执行程序。( 2 ) 库1 i b , 建立一个库文件,d 1 1 或s o 文件。 2 、t a r g e t :生成的目标文件的名称。 3 、c o n f i g :定义生成d e b u g 版本还是r e l e a s e 版本。 4 、i n c l u d e p a t h :编译该项目时所依赖的头文件路径。 5 、d e p e n d p a t h :应用程序所依赖的文件所在的路径。 6 、s o u r c e s :该选项通知编译器源代码文件的路径。 7 、h e a d e r s :所包含的头文件路径。 在一个项目中,由于头文件和源文件比较多,一般我们把头文件和源文 件放在一个文件中,然后再在p r o 文件中包含这个文件。 编译文件p r o 的典型配置如下图2 5 所示。 西南交通大学硕士研究生学位论文第16 页 t e m p l a t e = a p p t a r g e t = m a p p d e s t d i r = d e b u g c o h f i g + = d e b u g t r f l h s l a t l 0 h s 。b a sz hc n t s ih c l u d e p n t h + 暑,g e n e r a t e d f i l e s 、 g e n e r a t e d f i l e s d e b u g d e p e h d p a t h + ; h o cdi r + = ,g e n e r a t e d f i l e s ,d e b u q o b j e c t sd ir + = d e b u q u id i r + =,g e n e r a t e d f i l e s r c cd i r + = ,g e n e r a t e d f i l e s 曩i n c l u d ef i l e ( s ) i n c l u d e ( i 却a p p p r i ) 图2 - 5 编译配置文件图例 m y a p p p f i 文件的配置如下图2 - 6 所示。 # h e a d e rf i l e s h e a d e r s + = ,d r a c u r u e r h 、 # s o u r c ef i l e s s o u r c e s + =,d r a c u r u e r c p p 、 重f o r m s f o r m s + - ,d r a i 睡c u r v e r u i 图2 - 6p r i 文件的配置图例 当把上述的文件配置好以后,便可以编译我们编写的程序了。其编译过 程如下:通过命令q m a k e 指定生成好的p r o 文件,然后运行m a k e 命令,这 时程序就开始编译。 2 3 本章小节 本章首先阐述了基于插件技术的软件架构结构,介绍了与传统的软件体 系结构的不同处以及插件技术的优点等。紧接着阐述了q t 相关技术,包括 q t 关键技术,介绍了q t 对象模型以及q t 对象之间通信的机制等。 西南交通大学硕士研究生学位论文第17 页 第3 章
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 武汉离婚协议书
- 旧村复垦协议书
- 临时工劳务派遣合作协议
- 个人住房转让协议书
- 专业学术文献数据库共建协议
- 车辆购买合同协议范本
- 路面材料路沿石合同协议
- 法院成交协议书
- 路基施工方案合同协议
- 焦化企业员工岗前培训
- 5吨龙门吊安装与拆除专项施工方案
- PKPM桁架、支架、排架建模设计
- 汛期巡视检查记录
- 新版现代西班牙语第三册课后答案
- (高职)东财出版社-人际沟通实训教程PPT课件ppt课件(完整版)
- 港口机械液压与液力传动整套课件汇总完整版电子教案(全)
- 广东开放大学商务英语专业(专科)综合实践报告0
- 肾移植术后的护理查房供参考
- GB∕T 18998.2-2022 工业用氯化聚氯乙烯(PVC-C)管道系统 第2部分:管材
- 心肺复苏后的亚低温治疗
- 武汉市农村土地承包经营权转包出租合同
评论
0/150
提交评论