版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
太原理工大学毕业设计(论文)用纸PAGEPAGE3太原理工大学毕业设计(论文)任务书第1页毕业设计(论文)题目:基于Qt的EMD桌面系统毕业设计(论文)要求及原始数据(资料):1.综述国内外桌面系统研究现状;2.深入了Qt与桌面系统的相关技术就及数据库的基本用法;3.实现桌面系统的界面设计和功能设计;4.深入分析Qt中关于桌面系统的关键技术与编写语言;5.训练检索文献资料和利用文献资料的能力;6.训练撰写技术文档与学位论文的能力。第2页毕业设计(论文)主要内容:1.综述桌面系统在实际生活中的应用;2.了解Qt与桌面系统的相关技术;3.熟悉EMD桌面系统的的开发环境;4.深入分析Qt中关于桌面系统的关键技术与编写语言Qt的设计流程;5.熟练掌握基于Qt的EMD桌面系统的编写;6.实现预想中的登录界面,桌面界面,桌面小工具应用,桌面图标操作,移植等各个功能。学生应交出的设计文件(论文):1.内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文;2.包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。第3页主要参考文献(资料):[1]张春艳.基于Qt的嵌入式图形用户界面研究与实现,大连海事大学,2008.42~44[2]万长胜,金革等.用Qt进行面向对象软件的设计与开发,核电子学与探测技术,2004,24(3).45~50[3]刘艳青,苏桂莲.基于Qt4的图形用户界面程序的设计与实现,现代计算机,2009(3).120~125[4]薛岭,蒋馥.桌面系统仿真的开发与应用,上海铁道大学学报,1998(5).85~89[5]贾丽娜.基于USB盘的微型Linux桌面系统的设计与实现,西安电子科技大学,2007.33~38[6]董兰芳,刘祥春,陈意云.虚拟桌面系统的实现原理,计算机工程,2001,27(5).144~158[7]陈常松,李英成.GIS软件市场战略:开发小型桌面系统,遥感信息,1994(4).54~60[8]PlafkeJames.CanonicalunveilsUbuntuOSforphonesdoublesasdesktopOS.ExtremeT,2013.100~110[9]PamelaRavasio,SisselGuttormsenSchär.Inpursuitofdesktopevolution:Userproblemsandpracticeswithmoderndesktopsystems.ACMTrans.Comput.-Hum.Interact,2004.142~148[10]AleksandarIlic,LeonelSousa.CHPS:AnEnvironmentforCollaborativeExecutiononHeterogeneousDesktopSystems.IJNC,2011.118~122专业班级软件1005班学生要求设计(论文)工作起止日期2014年3月17日~2014年6月27日指导教师签字日期2014年3月17日教研室主任审查签字日期系主任批准签字日期PAGEiv摘要随着嵌入式技术的不断发展,现代通讯技术的日益成熟、完善,以及新一代通讯标准的出现,现在人们使用具备高级商务功能的智能移动计算设备已成为可能,从而对基于这一类设备的桌面系统也提出了更高的要求。桌面系统的技术热点和发展趋势在于桌面操作系统和办公套件能为家庭、企业、政府及其他领域提供了基础使用环境,而且必须适应、满足实际使用模式的多样性与硬件平台的差异性,诸如移动终端、个人工作站、商务办公、政府协同处理以及国内外硬件平台的差异性,所以桌面操作系统和办公套件是现今时代最具代表性的基础信息化工具软件,同时也是软件、应用、服务的使用基础平台。系统由登录/退出、简单数据库操作、桌面小工具、桌面应用图标管理和操作、系统移植等模块组成。本系统是在以Qt4.7.2的版本为运行平台,以c++为编程语言来开发的,实现了一个简单地桌面系统。关键词:Qt;嵌入式;桌面系统;c++BasedontheQTEMDdesktopsystemAbstractWiththecontinuousdevelopmentofembeddedtechnology,moderncommunicationtechnologybecomingmorematureandperfect,andtheemergenceofanewgenerationofcommunicationstandard,nowpeopleusehaveadvancedbusinessfunctionofintelligentmobilecomputingdeviceshasbecomepossibletodesktopsystembasedonthiskindofequipmentisalsoputforwardhigherrequirements.Desktophotspotsanddevelopingtrendsoftechnologyliesinitsdesktopoperatingsystemandofficesuiteforfamilies,businesses,governmentsandotherareasprovidethebasistousetheenvironment,andmustadapttoandmeetthediversityofactualusagepatternsandthedifferencesofhardwareplatform,suchasmobileterminal,personalworkstation,businessoffice,thegovernmentcoordinationtreatmentaswellasthehardwareplatformofthedifferencesbetweenbothathomeandabroad,sothedesktopoperatingsystemandofficesuiteisthebasisofthepresentageisthemostrepresentativeinformationtoolsoftware,andsoftware,applicationandserviceplatform.Systembythelogin/exit,simpledatabaseoperations,desktopgadgets,desktopiconmanagementandoperation,systemmodules,etc.ThissystemisinQt4.7.2versionasoperationplatform,basedonc++programminglanguagetodevelopandimplementasimpledesktopsystems.Keywords:Qt;embedded;Desktopsystem;c++
目录TOC\o"1-3"\h\u摘要 iAbstract ii1绪论 11.1课题背景 11.2课题开发意义 31.3本文结构 31.4项目设计原则 42关键技术 52.1关于Qt的相关介绍 52.1.1简介 52.1.2发行版本 52.1.3MFC介绍 62.1.4Qt与MFC比较 62.1.5使用Qt开发的成功案例 82.2关于嵌入式的相关介绍 102.3c++语言的简单介绍 112.4EMD的简单介绍 143总体分析与设计 153.1基于Qt的EMD桌面系统可行性分析 153.2基于Qt的EMD桌面系统需求分析 153.3基于Qt的EMD桌面系统的目标设计 163.4基于Qt的EMD桌面系统总体功能模块设计 163.5基于Qt的EMD桌面系统各功能模块设计 164系统实现 174.1桌面登录/退出模块 174.2简单数据库模块实现 184.3桌面界面设计 184.4桌面小工具模块 204.4.1帮助 204.4.2日历 214.4.3计算器 214.4.4音乐播放器 234.4.5时钟 244.4.6用户信息管理 244.4.7菜单信息管理 254.5桌面系统的EMD模块 264.5.1交叉编译写好的应用程序 264.5.2复制可执行文件到QPEDIR/bin目录下 264.5.3自定义应用程序的桌面文件(.desktop) 264.5.4为应用程序添加图标 264.5.5制作包含应用程序的文件系统映像 274.5.6使用U盘将文件系统映像复制到PC机 274.5.7使用DNW工具将文件系统映像烧写到Nand
Flash中 27结论 29参考文献 30致谢 31外文原文 32译文 39PAGE411绪论1.1课题背景电脑操作系统指的是在计算机上借助硬件运行并完成计算(应用)的软件,在桌面操作系统诞生之前,最有名的操作系统就是DOS,但是DOS的操作界面十分不友好,仅仅是代码而已,为此,微软公司推出了它们的第一个图形界面操作系统-windows1.0,尽管只有256色,但是在当时已经够吸引人了,直到今天macos·windows·linux三国鼎立的局面。操作系统按应用领域来划分,有桌面操作系统、服务器操作系统和嵌入式操作系统3种。桌面操作系统是其中应用最为广泛的系统。桌面操作系统基本上是根据人在键盘和鼠标发出的命令进行工作,对人的动作和反应在时序上的要求并不很严格。从应用环境来看,桌面操作系统面向复杂多变的各类应用。开发界面来看,桌面操作系统给开发人员提供一个“黑箱”,让开发人员通过一系列标准的系统调用来使用操作系统的功能。桌面操作系统相对于嵌入式操作系统来说,显得比较庞大复杂。平常生活中我们如果和朋友提起操作系统,相信大家首选联想的是电脑操作系统,如微软的windows
xp或者windows
7操作系统等。操作系统,简称OS是管理电脑硬件与软件资源的程序,那么目前电脑操作系统有哪些呢?1.WINDOWS操作系统;2.UNIX操作系;3.MAC操作系统;4.Linux操作系统。Unix系统是1969年在贝尔实验室诞生,最初是在中小型计算机上运用。最早移植到80286微机上的Unix系统,称为Xenix。
Xenix系统的特点是短小精干,系统开销小,运行速度快。UNIX为用户提供了一个分时的系统以控制计算机的活动和资源,并且提供一个交互,灵活的操作界。UNIX被设计成为能够同时运行多进程,支持用户之间共享数据。同时,UNIX支持模块化结构,当你安装UNIX操作系统时,你只需要安装你工作需要的部分,例如:UNIX支持许多编程开发工具,但是如果你并不从事开发工作,你只需要安装最少的编译器。用户界面同样支持模块化原则,互不相关的命令能够通过管道相连接用于执行非常复杂的操作。UNIX
有很多种,许多公司都有自己的版本,如
AT&T、Sun、HP等。Mac
OS操作系统是美国苹果计算机公司为它的Macintosh计算机设计的操作系统的一代操作系统,该机型于1984年推出,在当时的PC还只是DOS枯燥的字符界面的时候,Mac率先采用了一些我们至今仍为人称道的技术。比如:GUI图形用户界面、多媒体应用、鼠标等,Macintosh计算机在出版、印刷、影视制作和教育等领域有着广泛的应用,Microsoft
Windows至今在很多方面还有Mac的影子,最近苹果公司又发布了目前最先进的个人电脑操作系统Mac
OS
X。Linux是当今电脑界一个耀眼的名字,它是目前全球最大的一个自由免费软件,其本身是一个功能可与Unix和Windows相媲美的操作系统,具有完备的网络功能,它的用法与UNIX非常相似,因此许多用户不再购买昂贵的UNIX,转而投入Linux等免费系统的怀抱。Linux最初由芬兰人Linus
Torvalds开发,其源程序在Internet网上公开发布,由此,引发了全球电脑爱好者的开发热情,许多人下载该源程序并按自己的意愿完善某一方面的功能,再发回网上,Linux也因此被雕琢成为一个全球最稳定的、最有发展前景的操作系统。曾经有人戏言:要是比尔·盖茨把Windows的源代码也作同样处理,现在Windows中残留的许多BUG(错误)早已不复存在,因为全世界的电脑爱好者都会成为Windows的义务测试和编程人员。
Windows操作系统是一款由美国微软公司开发的窗口化操作系统。采用了GUI图形化操作模式,比起从前的指令操作系统如DOS更为人性化。Windows操作系统是目前世界上使用最广泛的操作系统。据微软执行副总裁茱莉·拉森葛林(JulieLarson-Green)透露,微软未来在操作系统或将进行统一化,Windows9开始将不再包含3个版本,即Windows9、WindowsPhone和WindowsRT将合为一体。智能手机、平板电脑的流行,不仅影响了传统计算机的硬件限售,甚至在系统层面,也对桌面系统带来了一些冲击。其中,最大的一个变化,就是桌面系统也逐渐开始免费。而对于用户来说,便宜的操作系统自然比昂贵的更好;而比便宜更好的,则是免费的系统。在对用户使用操作系统软件的需求调研后,最受用户关注的前三位因素分别是:安全性、易操作性、界面友好。操作系统未来的发展将聚焦在以下三个方面:1.比以往更加强大的集成搜索功能;2.更加绚丽的桌面和3D视觉效果;3.系统安全度有很大提升。当然,实现以上的功能,对于操作系统而言,也是要付出一些代价的,这个代价就是需要主频更高的CPU、更大的内存和硬盘空间做支持,以上功能才能得到更好的发挥。另外,在未来几年的发展中,Windows和Linux操作系统功能会更加的相似,Linux桌面操作系统的市场份额将会有更大的突破。在国内,因开发“红旗Linux”国产桌面操作系统而一炮成名的中科红旗公司,已于今年2月10日正式关门。多少次,曾经扬着红旗的小企鹅成了中国开发自主操作系统的希望,而如今,小企鹅只能留下背影,默默地离开。今天,《21世纪经济报道》发表文章《中科红旗解散国产操作系统梦断》。报道认为,红旗Linux系统是在盗版和微软垄断的挤压下走到山穷水尽的地步的。但观察者网从另外的渠道得知,有不少业内技术人员认为红旗Linux是个完全依赖国家核高基专款生存的项目,且在商业化运营手段和技术上都问题重重,中科红旗公司的解散主要还是由于其“内功”的致命缺陷。红旗Linux是由北京中科红旗软件技术有限公司开发的一系列Linux发行版,包括桌面版、工作站版、数据中心服务器版、HA集群版和红旗嵌入式Linux等产品。目前在中国各软件专卖店可以购买到光盘版,同时官方网站也提供光盘镜像免费下载。红旗Linux是中国较大、较成熟的Linux发行版之一。然而从红旗Linux发行以来,围绕这款操作系统就是非不断。该系统改变了Linux系统开放源代码的特性,改为封闭源代码,主要商业销售渠道是电脑厂商预置。在其发售之初,就有许多评论认为这样的模式在商业上注定是不会成功的。而红旗Linux遭人诟病最多的问题是据说其代码与目前成功的商业Linux系统——RedHat(红帽)操作系统有90%相同。中科红旗的商业运营情况不佳,用户数量,支持软件都非常稀少,同时其版本更新方面也问题不断。工信部软件与集成电路促进中心研究员胡昌军表示:商业公司肯定是以商业利益为主。如果说从整个市场(主要为家用PC)占有的份额来讲,全球的Linux份额可能不足1%,95%或以上可能都是XP等Windows系列,苹果的MacOS也占有一部分。因为它(国产系统)占有市场份额比较小,在国内也一样。当然商业公司就没有意愿去开发相关软件。在对硬件的支持方面,像一些手机、数码相机等产品,也无法和这一操作系统进行连接。国产操作系统也要逊于WindowsXP。中标软件有限公司副总裁乔咏:主要原因也是因为设备厂商没有对Linux操作系统提供很好的支持,就是不会给它专门提供相应的驱动,使得Linux在这方面的支持能力相对较弱。包括优麒麟在内的国产Linux操作系统,在易用性等方面基本具备XP替代能力,但还存在生态环境差等各种问题。2013年末,国产电脑操作系统红旗Linux遭遇“滑铁卢”,中科红旗软件技术有限公司经营发生严重困难,董事会于2013年12月13日决议从即日起解散公司。但国产操作系统的研发并未就此结束,目前国内还有多家公司在从事相关开发运营工作,而在世界范围内,Linux系统的商业化运用也还处于方兴未艾的阶段。中国工程院院士邬贺铨认为,微软停止对WindowsXP技术支持一事,给国产操作系统的发展带来了一个难得的契机,“别以为现在的苹果、谷歌很强大,已经动不了,创新才是永恒的。只要能坚持创新,那么什么时候都有机会。”2014年4月8日起,美国微软公司停止了对WindowsXP操作系统提供服务支持,这引起了社会和广大用户的广泛关注和对信息安全的担忧。工信部对此表示,将继续加大力度,支持Linux的国产操作系统的研发和应用,并希望用户可以使用国产操作系统。1.2课题开发意义中国工程院院士倪光南表示,电脑上的应用程序都是在操作系统的支持之下工作的。举个例子来说,操作系统就好像地基,应用程序就好像地基上的房子,都是通过地基到房子里的。也就是说,只要电脑联网,谁掌控了操作系统,就掌握了这台电脑上所有的操作信息。中国工程院院士倪光南:操作系统厂商很容易取得用户的各种敏感信息,你的身份、账户、通讯录、手机号……那么多数据在一起,如果你用大数据分析,我们国家经济社会的这种活动情况其实都可以了解。统计的数字比统计部门的数字还准确、更快。倪光南说,这种担心并不是杞人忧天。棱镜事件的主角斯诺登透露的资料显示,微软公司曾与美国政府合作,帮助美国国家安全局,获得互联网上的加密文件数据。倪光南表示,由于操作系统关系到国家的信息安全,俄罗斯、德国等国家已经推行,在政府部门的电脑中,采用本国的操作系统软件。由于国内电脑用户的不断增加,而国产操作系统是建立在Windows或者Linux的基础二次开发的操作系统。国内暂且还没有独立开发系统的能力。希望我们可以有自己开发的桌面操作系统。本系统的想法也不是很成熟,技术还很欠缺,但我知道还会有很多人在这条路上一直走下去。1.3本文结构具体地讲,各章研究内容如下:第一章,首先介绍了本文研究背景,探讨了研究意义,然后对桌面系统的研究和发展概况进行了简单回顾,本章同时综述了其研究的目的和意义,最后概述了本文的主要内容。第二章,首先介绍了本课题使用到的主要关键技术,并进行详细分析。第三章,首先对整个项目进行了可行性分析和需求分析,给出了整个框架的结构图,并结合源代码具体分析了技术的实现方法。第四章,重点介绍了该桌面系统的实现与使用方法,并且在后面附上了运行结果的图片。最后是本课题结论、参考的一些文献、致谢信和外文翻译。1.4项目设计原则1.统一设计原则 统筹规划和统一设计系统结构。尤其是应用系统建设结构、数据模型结构、数据存储结构以及系统扩展规划等内容,均需从全局出发、从长远的角度考虑。2.先进性原则 系统构成必须采用成熟、具有国内先进水平,并符合国际发展趋势的技术、软件产品和设备。保证先进的同时还要保证技术的稳定、安全性。3.高可靠/高安全性原则 系统设计和数据架构设计中充分考虑系统的安全和可靠。4.标准化原则 系统各项技术遵循国际标准、国家标准、行业和相关规范。5.成熟性原则 系统要采用国际主流、成熟的体系架构来构建,实现跨平台的应用。6.适用性原则 保护已有资源,急用先行,在满足应用需求的前提下,尽量降低建设成本。7.可扩展性原则 尽可能设计的简明,降低各功能模块的耦合度,并充分考虑兼容性。系统能够支持对各种格式数据的存储。
2关键技术2.1关于Qt的相关介绍2.1.1简介QtCreator包括项目生成向导、高级的C++代码编辑器、浏览文件及类的工具、集成了QtDesigner、QtAssistant、QtLinguist、图形化的GDB调试前端,集成qmake构建工具等。下面介绍Qt功能和优势:
1.QtCreator主要是为了帮助新Qt用户更快速入门并运行项目,还可提高有经验的Qt开发人员的工作效率。
2.使用强大的C++代码编辑器可快速编写代码。
3.语法标识和代码完成功能输入时进行静态代码检验以及提示样式上下文相关的帮助代码折叠括号匹配和括号选择模式高级编辑功能。
4.使用浏览工具管理源代码。
5.集成了领先的版本控制软件,包括Git、Perforce和Subversion开放式文件,无须知晓确切的名称或位置搜索类和文件跨不同位置或文件沿用符号在头文件和源文件,或在声明和定义之间切换。
6.为Qt跨平台开发人员的需求而量身定制。
7.集成了特定于Qt的功能,如信号与槽(Signals&Slots)图示调试器,对Qt类结构可一目了然集成了QtDesigner可视化布局和格式构建器只需单击一下就可生成和运行Qt项目。2.1.2发行版本Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司于1995年底出品。Trolltech公司在1994年成立,但是在1992年,成立Trolltech公司的那批程序员就已经开始设计Qt了,Qt的第一个商业版本于1995年推出。2008年1月31日,Nokia公司宣布通过公开竞购的方式收购TrollTech公司,旗下包括Qt在内的技术都归入Nokia旗下。并且Nokia针对自己的移动设备平台规划的需要,将Qt按不同的版本发行:1.Qt商业版:提供给商业软件开发。它们提供传统商业软件发行版并且提供在协议有效期内的免费升级和技术支持服务。2.Qt开源版:仅仅为了开发自由和开放源码软件,提供了和商业版本同样的功能。GNU通用公共许可证下,它是免费的。2009年3月发布的Qt4.5起,诺基亚为Qt增添开源LGPL授权选择。2009年5月11日起,诺基亚QtSoftware宣布Qt源代码库面向公众开放,Qt开发人员可通过为Qt以及与Qt相关的项目贡献代码、翻译、示例以及其他内容,协助引导和塑造Qt未来的发展。为了便于这些内容的管理,QtSoftware启用了基于Git和Gitorious开源项目的Web源代码管理系统。Qt专业版和企业版是Qt的商业版本。2.1.3MFC介绍MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windowsAPI函数,vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它你可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。有时人们说vc呢也指它的内部编译器,集成开发环境必须有一个编译器内核,要不有什么用,例如DevC++其中一个编译器内核就是gcc。MFC除了是一个类库以外,还是一个框架,你应该试过,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。xx是版本,它封装了mfc内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率但是MFC的封装很浅,所以效率上损失不大,灵活性还可以,虽然也有很多缺陷,但还是一个比较好的东西。MFC下创建一个窗口对象分两步,首先创建MFC窗口对象,然后创建对应的Windows窗口。在内存使用上,MFC窗口对象可以在栈或者堆(使用new创建)中创建。具体表述:创建MFC窗口对象。通过定义一个CWnd或其派生类的实例变量或者动态创建一个MFC窗口的实例,前者在栈空间创建一个MFC窗口对象,后者在堆空间创建一个MFC窗口对象。调用相应的窗口创建函数,创建Windows窗口对象。2.1.4Qt与MFC比较Qt和MFC的差异在于其设计的差异。MFC的根本目的是访问包装起来的用C语言写的windows的API。这绝非好的面向对象的设计模式,在很多地方,你必须提供一个包含15个成员的C语言的struct,但是其中只有一个与你所期望的相关,或者必须用旧式的参数来调用你的函数。MFC还有许多让人摸不着头脑的地方,函数名没有任何的连续性。比如,如果你创建了一个graphical类,直到调用了creat()以后该类才会被创建。然而对dialogs,必须要等到OnInitDialog()才能创建这个对象。奇怪的是到了views,创建该类的函数名竟然成了OnInitUpdate(),你自己创建一个类用他们的方式调用它,你的程序崩溃了。比如说有一个dialog包含CEdit控件,如果没有调用DoModal()你就不能使用GetWindowText()。否则将会莫名其妙的失败。总之,MFC充满了丈二和尚摸不着头脑的事情,并且,这种错误很难调试。(诚然,MFC是为了封装WindowAPI。用MFC比WinowsAPI会简单些,但确实有些函数的调用时机、先后顺序,如果不是用过一段时间,确实可能因此导致问题。)
Qt恰恰相反,它的架构明显是经过精心设计的面向对象的。Qt因此在命名,继承,类的组织等方面保持了优秀的一致性。你只需要提供唯一一个方法的参数,仅此一个。在不同的类中调用方式也是有很强的连贯性。返回值也很有逻辑性。所有一切达到了简单和强大的和谐统一。一旦你使用了其中一个类,其他的类也就触类旁通,因为他们是一致的。在Qt中可以利用Edit控件,用C++创建类的方法来创建自己的QLineEdit。永远可以马上访问任何的方法,不管它是显示还是隐藏。在这里没有迷局,一切都按照你认为的简单的方式来运作。
MFC是事件驱动的架构。要执行任何操作,都必须是对特定的消息作出响应。Windows对应用程序发送的信息数以千计,遗憾的是,要分清楚这些分繁芜杂的消息是很困难的,并且关于这方面的文档并不能很好的解决这些问题。Qt的消息机制是建立在SIGNAL()发送和SLOT()接受的基础上的。这个机制是对象间建立联系的核心机制。利用SIGNAL()可以传递任何的参数。他的功能非常的强大。可以直接大传递信号给SLOT(),因此可以清楚的理解要发生的事情。一个类所发送的信号的数量通常非常的小(4或者5),并且文档也非常的齐全。这让你感觉到一切尽在掌握之中。SIGNAL/SLOT机制类似于Java中listener机制,不过这种机制更加轻量级,功能更齐全。
MFC无法创建大小动态可变的子窗口,必须重新手动修改代码来改变窗口的位置(这恰好解释了为什么windows里的dialog是不可以改变的)这个问题在软件进行国际化翻译的时候更加严重,因为许多国家表达相同意思需要更长的词汇和句子,必须要对每个语言的版本重新修改自己的软件。
在Qt中,任何东西都可以手动的敲出来,因为它很简单:为了得到一个utton,可以这样些button=newPushButton("buttonName",MyParentName);如果想在按下某个按钮以后想调用某断代码的执行,可以这样写:connect(button,SIGNAL(clicked()),qApp,SLOT(action()));Qt拥有非常简单而又不失强大的layout机制,以至于不使用它就是在浪费时间了。
Qt还提供了一个图形用户工具,QtDesigner,可以用来帮助建立用户界面。可以修改所使用的任何控件的属性。不用将他们放在严格的位置,可以通过layout完美的组织他们。这个工具所产生的代码我们是可以实际上阅读并且可以理解的。生成的代码单独放在一个文件里,在编程的同时,你可以随心所欲的多次重新生成用户界面。QtDesigner可以让你完成许多在MFC中不可能完成的任务,比如用预先填好的生成listview,在每个tab上用不同的view来使用tab控制。
用户选择图形开发环境的时候,帮助文档是否周全是左右其选择的重要因素。Visual的开发环境的帮助文档MSDN(这个还要单独掏钱购买)非常的庞大,有10个CDROM光盘。他包罗万象,涵盖广泛。但是难免有泥沙俱下,主题模糊,关键信息不突出的遗憾。其链接设计的也很糟糕,通过链接很难从一个类跳转到其父类或者子类以及相关的类。如果你搜索一个关键字,不管是VisualC++,VisualJ++,VisualBasic,只要包含这些关键字的信息统统的返回来。
Qt的文档设计的相当优秀。你可以到上面一睹芳容。Qt的文档完备且详细的覆盖了Qt的方方面面,竟然仅有18M。每一个类和方法都被详尽描述,巨细靡遗,举例充实。通过Trolltech公司提供的链接或者是QtAssistant工具,可以方便的从一个类或者方法跳转到其他的类。文档还包含了一个初学者教程和一些典型应用的例子。同时还提供了FAQ和邮件列表,方便通过Internet或者用户群来查阅。如果你购买了授权,在一天之内你将会得到Trolltech公司的技术支持。实际上,Qt优秀的帮助文档使得寻求外部帮助的机会大大减少。Tolltech公司的一个宗旨是:有如此优秀的Qt产品以及其帮助文档,技术支持是多余的。
使用MFC,如果要显示unicode,在编译链接的时候必须用到特殊的参数(和改变可执行文件执行的入口),必须在每个string前面加上T,将char修改成TCHAR,每个字符串处理函数(strcpy(),strdup(),strcat())都要改变成另外的函数名。更令人恼火的是支持Unicode的软件竟然不能和不支持Unicode的DLL一起工作。当使用外部DLL来开发的时候,这是个很严重的问题,但是你毫无选择。
使用Qt,字符串用QString来处理,其本身是与生俱来的Unicode.不需要改变什么东西。不要在编译/链接时候增添参数,不要修改代码,只需要使用QString就可以了。QSting类功能强大,你可以广泛的使用它,并且不要担心Unicode问题。这使得转换为Unicode非常的方便。QSting提供了转换为char*和UTF8的函数。显然,MFC的CString的设计相比于Qt的QString设计有着巨大的不同。CString以char*为基础提供了很少的功能。它的优点是当需要char*类型的时候,可以直接使用CString类型。乍看起来这个好像是个优点,其实实质上还是有很大的缺陷的,特别是可以直接修改char*而不要更新类。在转变为Unicode的时候这个也碰到很大的麻烦。(CString随编译选项可以是Unicode版)相反,QString在内部以unicode存储string,需要时提供char*功能。实际上很少用到char*,因为整个Qt的API用文本的方式响应QString参数。QString还附带许多其他的功能,比如自动分享QString的内容。这是一个非常强大的类,你会喜欢在很多地方用它的。
使用MFC是可以国际化的,但是需要将每一个字符串放在一个字符串表中,在代码中到处使用LoadString(IDENTIFIET)。然后转化这些资源到DLL中,翻译字符串到所需要的语言,改变图形界面,然后调用程序使用这个DLL。整个过程是如此的繁琐,可谓牵一发而动全身。考虑的事情要面面俱到。
使用Qt的时候,只需要将字符串置于函数tr()中,在程序开发中这算是举手之劳。可以直接在代码中改变字符串的参考。QtLinguist,Qt的一个工具,能够提取所有待翻译的string并按照友好的界面显示出来。这个用户界面非常适合翻译,使用字典,显示字符串内容,恰当的unicode显示,快捷方式冲突检测,检测未翻译的字符串,检测字符串修改情况,功能齐全。这个软件可以供没有任何编程经验的翻译者使用。同时该软件在GPL的版权下发布,可以按照你的需求来修改它。翻译以后的文档保存在XML中,适合软件复用的原则。为软件增加一种新的语言版本仅仅是用QtLinguist产生一个新的文件而已。在本次桌面系统开发中注重的是图形化界面的使用,所以使用Qt将会对本设计有很大的帮助。由于在以前的学习中很少接触到MFC的开发,而Qt开发则是学习了有一段时间,因此本设计使用Qt开发设计。2.1.5使用Qt开发的成功案例一些著名的例子如下:3DSlicer,afreeopensourcesoftwareforvisualizationandmedicalimagecomputingAcetoneISO:镜像文件挂载软件;AdobePhotoshopAlbum:一个图像组织应用程序;Arora:一款跨平台的开源网页浏览器;AutodeskMotionBuilder,三维角色动画软件;AutodeskMaya,3D建模和动画软件;Avidemux,aFreeSoftwareprogramdesignedformulti-purposevideoeditingandprocessingAvogadro:高级分子编辑器;B:暴雪公司开发的游戏对战平台BOUML:一个免费的统一建模语言工具箱Bitcoin:比特币chmcreator:开源的chm开发工具CineFX:一款跨平台、开源、免费、影片剪辑,特效与合成套装CoCoA:asoftwareforcomputationsincommutativealgebraDashExpress,anInternet-enabledpersonalnavigationdeviceDAZStudio,a3Dfigureillustration/animationapplicationDoxygen:API文件产生器EAGLE,toolfordesigningprintedcircuitboards(PCBs)EiskaltDC++,aprogramthatusestheDirectConnectprotocol.Emergent:神经网络模拟器。Asoftwareproductforthesimulationofelectromagneticfieldseva:Linux版QQ聊天软件。FreeCAD,afreeandopensource3D-SolidandgeneralpurposedesignCAD/CAEFreeMat:一个自由开源的数值计算环境和编程语言FullTiltPoker,oneofthemostpopularonlinepokerprograms。Gadu-Gadu:实时通信软件Gambas,AfreedevelopmentenvironmentbasedonaBasicinterpreterGoldenDict:一款开源的字典软件Google地球(GoogleEarth):三维虚拟地图软件。GNS:Cisco网络模拟器。GuitarPro6,atablatureeditor刺猬大作战:一个基于百战天虫的开源游戏。Hydrogen,anadvanceddrummachineImageVis3D,avolumeray-castingapplicationIpe:自由的矢量图形编辑器ISEWebpack,afreewareEDAtoolforWindowsandLinuxdevelopedbyXilinxKadu,aPolishinstantmessengerusingtheGadu-Gaduprotocol。KDELibs:一个许多KDE程序都使用的共享库,如Amarok、K3b、KDevelop、KOffice等。KeePassX,amulti-platformportofKeePass,anopensourcepasswordmanagerforMicrosoftWindowsLaunchy:一个开放源代码的快捷启动器LMMS:一个开放源代码的音乐编辑软件LyX:使用Qt作为界面的LaTeX软件。Mathematica:Linux和Windows版本使用Qt作为GUIMaxwellRender,asoftwarepackagethataidsintheproductionofphotorealisticimagesfromcomputer3DmodeldataMixxx:跨平台的开放源代码DJ混音软件MuseScore,一个WYSIWYG的乐谱编辑器MythTV:开源的数字视频录制软件。Nuke,anode-basedcompositorPDFedit:自由的PDF编辑器PokerTH,anopensourceTexashold'emsimulatorPsi:一款XMPP网络协定的实时通信软件qBittorrent:自由的BitTorrentP2P客户端QCad:一个用于二维设计及绘图的CAD软件Qjackctl,atoolforcontrollingtheJACKAudioConnectionKitQSvn,aGUISubversionclientforLinux,UNIX,MacOSXandWindowsOpera:著名的网页浏览器。QtCreator,thefreesoftwarecross-platformintegrateddevelopmentenvironmentfromNokiaQterm:跨平台的BBS软件。QuantumGIS:自由的桌面GISQuasselIRC:跨平台的IRC客户端RealFlow,afluidanddynamicssimulatorforthe3DindustryRecoll:桌面搜索工具Rosegarden,afreesoftwaredigitalaudioworkstationprogramSciDAVis,across-platformplottinganddataanalysisprogramScribus:桌面排版软件。Skype:一个使用人数众多的基于P2P的VOIP聊天软件。SMPlayer:跨平台多媒体播放器Spotify,musicstreamingservice.Stellarium:一款天文学的自由软件TeamSpeak:跨平台的音效通信软件Texmaker:一款跨平台的开放源代码LaTeX编辑器TeXworks,ItisagraphicaluserinterfacetothetypesettingsystemTeX.TOra,adatabaseadministrationtool[36]UniversalIndentGUI,anapplicationwhichhelpstheusertobeautify,reformatorindentvariouskindsofcode.Valknut,aprogramthatusestheDirectConnectprotocolVirtualBox:虚拟机软件。VisIt:一个开源型交互式并行可视化与图形分析工具,用于查看科学数据。VisTrails,ascientificworkflowmanagementandvisualizationsystemVLC多媒体播放器:一个体积小巧、功能强大的开源媒体播放器。VoxOx,aunifiedcommunicationssoftware.WordPress,basedonQtforMaemoandSymbianwpasupplicant,afreesoftwareimplementationofanIEEE802.11iXconfig:Linux的Kernel配置工具咪咕音乐:咪咕音乐是中国移动倾力打造的正版音乐播放器WPSOffice:金山软件公司推出的办公软件极品飞车:韩国Gameloft游戏公司出品的著名赛车类游戏2.2关于嵌入式的相关介绍
1.嵌入式系统的产生
嵌入式系统诞生于微型机时代,经过微型计算机的嵌入式专用化的短暂探索后,便进入到嵌入式系统独立的微控制器发展时代。直接在嵌入式处理器与外围集成电路技术基础上发展的带处理器内核的单片机,即微控制器的智能化电子系统。即便有处理器内核,也是嵌入式处理器而非通用微处理器。2.嵌入式系统的独立发展道路
嵌入式系统的微控制器(MCU)发展道路,是一条摆脱“专用计算机”羁绊,独立发展的道路。这是一条由IntelMCS51单片机、iDCX51实时多任务操作系统开辟的单片机独立发展的道路。MCS51是一个在微电子学、集成电路基础上,按照嵌入式应用要求,原创的嵌入式处理器。MCS51原创的体系结构、控制型的指令系统与布尔空间、外部总线方式、特殊功能寄存器(SFR)的管理模式,奠定了嵌入式系统的硬件结构基础;iDCX51是专门与MCS51单片机配置,满足嵌入式应用要求原创的实时多任务操作系统。3.平台模式的由来
平台模式是知识经济时代的一种基本的产业、科技模式,是人类知识分离性规律、集成性规律发展到高级阶段上的必然现象。它将一体化的产业、科技模式变革为知识平台媒介下的平台模式。只要对比上世纪60年代收音机产业与90年代的VCD/DVD产业,就会发现一体化产业模式与平台产业模式的本质差异。
4.嵌入式系统的平台模式
按照知识的分离性发展规律,知识创新者不从事知识应用,知识应用者不需要了解创新知识原理;按照集成性发展规律要求,知识创新者应该将创新知识成果集成到工具之中,转化为知识平台,知识应用者应该在知识平台基础上实现创新知识应用。对象学科领域是嵌入式系统的最终用户,对象学科领域的电子技术应用工程师应该在一个现成的嵌入式系统平台上实现嵌入式应用系统设计。微电子学科、嵌入式计算机学科、电子技术学科(非对象学科领域中的应用工程师)不是嵌入式系统最终用户,这些学科的重要任务是将创新科技成果转化成形形色色的知识平台。
嵌入式系统是一个无限大的空间,不论是嵌入式系统平台构建还是嵌入式系统平台应用,都有无限广阔的发展空间,关键是把握好自己的“定位”与“分工”,了解学科的“交叉”与“融合”。近年来,随着嵌入式硬件设备在性能上的大幅度提升和高端嵌入式应用对人机交互需求的不断加强,在基于32位微处理器的高端嵌入式平台中大多已使用LCD、触摸屏等设备作为人机交互的硬件接口,并采用基于图形库的嵌入式桌面系统作为上层的人机界面。目前有多种基于Linux的嵌入式桌面系统,Qtopia是其中比较成熟、应用广泛的一种,它采用Qt/Embedded作为底层图形库。Qt/Embedded是PC平台Linux上著名的KDE桌面系统所采用的Qt图形库的嵌入式版本。2.3c++语言的简单介绍C++语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。C++的设计目标,就是要让C++既具有适合于系统程序设计的C语言所具有的可适应性和高效性,又能在其程序组织结构方面具有像Simula那样的语言设施(Simula所支持的这种程序组织结构通常被称为面向对象程序设计风格)。在设计的时候,还做了很大的努力,使得引借自Simula的高层次的程序设计技术能够应用于系统程序设计之中。这即是说,C++所提供的抽象机制能够被应用于那些对效率和可适应性具有极高要求的程序设计任务之中。设计原则:在[Stroustrup,1994]中,C++的设计规则被分为基本规则、基于设计的规则、语言的技术性规则以及基于低层次程序设计的规则四个方面,分列在下文中。基本规则:C++的每一步演化和发展必须是由于实际问题所引起的;C++是一门语言,而不是一个完整的系统;不能无休止的一味追求完美;C++在其存在的“当时”那个时期必须是有用处的;每一种语言特性必须有一个有根据的、明确的实现方案;总能提供一种变通的方法;能为意欲支持的每一种程序设计风格提供易于理解的支持方法;不强制于人。可以注意到,基本规则的最后三条暗示了两点:对适用于真实世界中各种应用的便捷工具的强调;对程序员的技术和取向(偏好)的充分考虑。从一开始,C++面向的就是那些要做实际项目的程序员。所谓的“完美”被认为是不可能达到的,这是由于C++用户在需求、背景和待解决问题上存在着太大的不同。况且,在一门通用目的的程序设计语言的整个生存期之内,连对“完美”一词的诠释都可能会有极大的改变。由此可知,在语言的演化过程中,来自用户的反馈和语言实现者们积累的经验才是最为重要的。而它基于设计的规则为:支持良好的设计方案;提供用于程序组织的语言设施;心口如一(Saywhatyoumean);所有的语言特性必须具有切实有效的承受能力;开启一个有用的特性比避免所有的误用更为重要;能将独立开发的部件组合成完整的软件。C++的一个目标就是提供更易用并具有一定承受能力的设计思想和程序设计技术,进一步提高程序的质量。这些技术中的绝大部分都源自Simula[Dahl,1970][Dahl,1972][Birtwistle,1979],并通常被作为面向对象程序设计和面向对象设计思想来讨论。然而,C++的设计目标总还是在于要支持一定范围内的各种程序设计风格和设计思想。这与一般在语言设计方面的观点形成一定对比。一般在语言设计上总是试图将所有系统内建于单独一个被重点支持的、带有强制性的程序设计风格之中(或称典范paradigm)。技术性规则(Language-technicalrules):与静态型别系统(Statictypesystem)没有内在的冲突;像对内建(built-in)型别一样对用户自定义型别提供很好的支持;个异化(locality)行为是可取的;避免产生顺序上的依赖关系;在对语言产生疑惑时,可以选取其特性中最易掌握的部分;可以因为不正当的语法使用而产生问题(Syntaxmatters(ofteninperverseways));削弱对预处理器的使用。当然,这些规则要具体结合更多关于基本目标的上下文环境来考虑。应该注意到的是,在“与C有较高的兼容性”、“不损失效率”以及“具有便捷的可用性来解决实际问题”这三个方面的要求,与在“完整的型别安全性”、“完全的通用性”以及“完善的抽象之美”这三个方面的要求形成对立。在编写和实现中,一个程序从编写到最后得到运行结果要经历以下一些步骤1.用C++语言编写程序,用高级语言编写的程序称为“源程序”(sourceprogram)。C++的源程序是以.cpp作为后缀的(cpp是cplusplus的缩写)。2.对源程序进行编译,为了使计算机能执行高级语言源程序,必须先用一种称为“编译器(complier)”的软件(也称编译程序或编译系统),把源程序翻译成二进制形式的目标程序(objectprogram)。编译是以源程序文件为单位分别编译的。目标程序一般以.obj或.o作为后缀(object的缩写)。编译的作用是对源程序进行词法检查和语法检查。编译时对文件中的全部内容进行检查,编译结束后会显示出所有的编译出错信息。一般编译系统给出的出错信息分为两种,一种是错误(error);一种是警告(warning)。3.将目标文件连接,在改正所有的错误并全部通过编译后,得到一个或多个目标文件。此时要用系统提供的“连接程序(linker)”将一个程序的所有目标程序和系统的库文件以及系统提供的其他信息连接起来,最终形成一个可执行的二进制文件,它的后缀是.exe,是可以直接执行的。4.运行程序运行最终形成的可执行的二进制文件(.exe文件),得到运行结果。5.分析运行结果如果运行结果不正确,应检查程序或算法是否有问题。面向对象程序设计有4个主要特点:抽象、封装、继承和多态性。要较好地进行面向对象程序设计,还必须了解面向对象程序设计另外两个重要特征——继承性和多态性。面向对象技术强调软件的可重用性(softwarereusability)。C++语言提供了类的继承机制,解决了软件重用问题。在C++中可重用性是通过继承(inheritance)这一机制来实现的。继承是C++的一个重要组成部分。一个类中包含了若干数据成员和成员函数。在不同的类中,数据成员和成员函数是不相同的。但有时两个类的内容基本相同或有一部分相同。利用原来声明的类Student作为基础,再加上新的内容即可,以减少重复的工作量。C++提供的继承机制就是为了解决这个问题。在C++中,所谓“继承”就是在一个已存在的类的基础上建立一个新的类。已存在的类(例如“马”)称为“基类(baseclass)”或“父类(fatherclass)”。新建的类(例如“公马”)称为“派生类(derivedclass)”或“子类(sonclass)”。一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。通过继承,一个新建子类从已有的父类那里获得父类的特性。从另一角度说,从已有的类(父类)产生一个新的子类,称为类的派生。类的继承是用已有的类来建立专用类的编程技术。派生类继承了基类的所有数据成员和成员函数,并可以对成员作必要的增加或调整。一个基类可以派生出多个派生类,每一个派生类又可以作为基类再派生出新的派生类,因此基类和派生类是相对而言的。C++语言优点:C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言;C++设计成直接的和广泛的支持多种程序设计风格(程序化程序设计、资料对象化、面向对象程序设计、泛型程序设计);C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误;C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡;C++避免平台限定或没有普遍用途的特性;C++不使用会带来额外开销的特性;C++设计成无需复杂的程序设计环境。本设计是基于Qt的桌面系统设计,在前边也讲述了使用Qt比其他开发工具适合,而在Qt中c++是使用最广泛的用例。使用Qt编写的c++程序具有良好的跨平台特性,程序员几乎无需更改代码,所编写的应用程序即可运行在各种操作系统中,这能大幅度缩短开发周期、降低成本。Qt的c++类库是完全面向对象的,该类库不但功能强大,而且设计精良、方便易用。Qt类库非常复杂,该类库不但全面覆盖了c++的各种语言特性,还用到了MVC(Model-View-Control)框架、隐式共享、信号与槽、命令模式、抽象工厂模式、观察者模式等。2.4EMD的简单介绍EMD(即Embeddeddesktop)是基于qt4的嵌入式桌面系统,和qtopia是同一类型的软件,它的优点是小巧,
你可以从这个软件中学到构建自己的桌面系统的方法,现在他不包含任何有用的应用软件。它和QtEmbedded开源版本遵循同样的许可证。现在这个它才刚刚起步,还在不断的扩展和优化中,希望能有更多的人对它感兴趣。
3总体分析与设计3.1基于Qt的EMD桌面系统可行性分析可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。达到这个目的不能靠主管猜想,而只能靠客观分析。必须分析几种主要的可能的解决的利弊,从而判断原定的系统目标和规模是否实现,系统完成后所能带来的效益是否达到值得投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以抽象的方式进行的系统分析和设计的过程。从以上的分析来看,我设计的桌面系统是一个规模不太大的的系统,但目标明确,结构清晰。本设计从以下三个方面进行可行性研究:1.技术可行性。本设计“基于Qt的EMD桌面系统”可以使用于大多数用户。鉴于本人以前学过Qt开发技术,并且对Qt非常感兴趣,也设计过几个小项目,使自己在此项目方面的技术很有信心。由于本设计非常实用,结合自己现有的技术加上指导老师的指导,还是能按期完成本毕业设计。2.经济可行性。成本方面:由于本毕业设计是软件教学的最后一个环节,所以人力自己消耗,指导老师义务指导,只需设计开发期间开发者的生活消费。所以开发本软件的成本非常低。效益方面:这个桌面系统为广大手机用户开发,用户量非常大。所以从以上分析看本软件在经济上是可行的。3.操作可行性。这个桌面系统为广大手机用户开发,现有的开发工具和技术完全能够实现。对于用户没有任何的特殊要求,操作方便。该项目具有良好的易用性。所以从以上几个方面分析来看,开发本软件是完全可行的。3.2基于Qt的EM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年海南省建筑安全员《C证》考试题库
- 2025四川省建筑安全员《A证》考试题库
- 民航英语口语总复习课件
- 【大学课件】官方单据公务证书
- 专利申请实务
- 最小公倍数 比较课件
- 小古文-大禹治水课件
- 《展览品牌策划》课件
- 2025年中国男裤行业市场前景预测及投资战略研究报告
- 《慢性阻塞性肺疾患》课件
- 糕点烘焙承揽合同三篇
- 教师资格考试高中历史面试试题及解答参考
- 2024年社区工作者考试试题库
- 2024北京初三一模语文汇编:议论文阅读
- 工厂设备工程师年终总结
- 福建省厦门市2024-2025学年新人教版九年级语文上学期期末质量检测试题
- 办公室行政培训
- 2023部编新人教版五年级(上册)道德与法治全册教案
- (完整版)python学习课件024600
- 湖南省岳阳市2023-2024学年高一上学期1月期末质量监测试题+物理 含答案
- 圆柱的表面积课件
评论
0/150
提交评论