多文本编辑器设计与实现本科毕业设计.doc
《多文本编辑器设计与实现本科毕业设计.doc》由会员分享,可在线阅读,更多相关《多文本编辑器设计与实现本科毕业设计.doc(66页珍藏版)》请在三一办公上搜索。
1、多文本编辑器设计与实现摘 要在深入研究当前各种文本编辑软件优劣的前提上,分析软件开发中程序员的实际需求,发现他们有时候并不需要打开系统庞大、启动较慢的集成开发环境来阅读改写代码,只需要通过小型的文本编辑器即可。然而大多数小型文本编辑器并不能高亮显示代码中的关键字,或者软件本身闭源,不能根据需要改变高亮显示关键字列表,或者软件只有windows版或Linux版平台移植性较差,这并不能满足经常需要在各个软件系统平台之间交叉开发的程序员的需求,甚至影响了他们的工作效率。本系统运用了平台移植性较好的Qt语言来开发,不同平台之间只需要重新编译即可,且代码易读可重用性良好,程序员只需要修改代码中关键字列表
2、或根据需要自定义自己的高亮显示关键字列表即可,这一软件为程序员阅读改写代码提供了便利。关键词 自定义;多文本编辑器;Qt;高亮显示The Design and Implementation of Multiple Document EditorAbstractIn the further study of the current various text editing software quality on the premise of the analysis of the actual demand of software development programmers, find th
3、at they sometimes dont need to open the large system, start the slower integrated development environment to read rewrite code, you just need to through the small text editor. But most small text editor is not highlighted keywords in your code, or closed source software itself, not according to the
4、need to change the highlighted keywords list, or software version only Windows or Linux version of the moving platform plant sex is bad, it doesnt meet often need to cross between different software system platform development demand for programmers, and even affect their work efficiency. This syste
5、m USES the platform portability better Qt to develop language, you just need to recompile, between the platform and code easy to read good reusability, programmers only need to modify the code in the keywords list or according to the need to customize your highlighted keywords list, this software pr
6、ovides convenience for programmers to read rewriting code.Key words: multiple document editor; plugins; custom highlight目录摘要IAbstractII1绪论1 11现实背景和理论背景1 12研究目的和意义1 121目的1 122意义12软件需求分析23开发模型的确定3 31软件工程及其开发模型概述3 311软件工程3 312开发模型概述3 32确定增量模型64QT简介7 41 QT支持的平台7 42 QT的不同发行版本75多文本编辑器的设计和实现8 51信号/槽机制8 511
7、信号/槽机制概述8 512一个小例子9 513信号11 514槽11 515元对象信息12 516一个实际应用的例子13 52 QMDIAREA类14 521多文档界面程序14 522 QMDIAREA类1453 QSYNTAXHIGHLIGHTER类1654插件的实现机制1755插件的优点18 551插件机制加快运行速度18 552插件机制使软件的后期维护变得简单1856编写QT插件18 561较高级的API18 562较低级的API1957 QT插件分类19 571动态加载的插件19 572静态插件206运行测试及界面217关键代码及注释27结论45参考文献46致谢471 绪论1.1 现实
8、背景和理论背景虽然目前国内外的多文本编辑器种类已经不胜其数,在实际应用中,根据自己的需求找到一款很顺手的编辑器却不是每个人都能做到的.windows下绝大多数用户不二的选择的microsoft office尽管强大,但它所有的功能并不被人们所一一掌握,程序的庞大对于不需要它额外功能的用户来说,装载如此庞杂的程序到内存并不是必须的,无形中浪费了用户的时间.而Linux下最受欢迎的编辑器非Emacs莫属, 通过加载各种插件它的功能已经不再局限于文本编辑器,完全可以胜任编译与测试方面的工作,深受程序员的青睐.然而作为程序员在实际工作中,有时候并不需要那些诸如编译之类的功能,有时候他们只是需要阅读学习
9、或者稍微改动一些代码.这时候,他们需要的是一个轻便、无需浪费过多内存的多文本编辑器,便于多个程序代码之间参照读写。本课题的实践完成了这一需求,并借助于Qt语言“编码一次,多次部署,多平台运行”的宗旨,成功的实现了一个软件的多平台运行。目前,该文本编辑器支持windows、linux和Android三个平台。1.2 研究目的和意义1.2.1目的满足广大程序员的现实需求,实现一个可以多平台运行、自定义高亮显示方案的轻便多文本编辑器。1.2.2意义 通过该课题的研究,我们能更好地了解在实践中,针对用户分别定制软件需求的重要性。通过在实践中努力贯彻软件工程的思想,可以体会软件工程带给研发工作的高效性。
10、培养自己自主学习的能力,尝试独立完成项目,并总结经验,积累成长。2 软件需求分析根据以上在绪论中的分析,我们将满足广大程序员的现实需求,实现一个可以多平台运行、自定义高亮显示方案的轻便多文本编辑器。该软件要实现的具体功能如下所列:多文本编辑器的功能:1.维护各个编辑器的独立状态。2.可以打开多个编辑器,保证各个编辑器简单的复制、粘贴、删除等功能的实现。3.通过主窗口的菜单实现对各个编辑器状态的改变。4.帮助菜单选项显示软件帮助信息。5.实现各个编辑窗口的整理排序,以级联的方式排序各个窗口,方便用户快速文本概要信息。6.通过菜单随时调用显示当前编辑窗体之前之后的相邻窗体。高亮显示端功能:1.设定
11、的搞定显示关键字实现高亮显示。2.保证高亮显示这一功能在编辑器中的正确调用。插件功能:根据当前编辑文件的类型正确的加载相应的自定义插件。根据插件加载情况,实时地在终端打印,方便用户根据需要修改插件。3 开发模型的确定3.1软件工程及其开发模型概述3.1.1软件工程该软件的开发完全应用软件工程的思想-将工程化应用于软件来提高软件开发的效率。目前,业界对于软件工程这一概念有以下观点:1.软件工程遵循创立与使用健全的工程原则,以便经济地获得可靠且高效率的软件。2.软件工程需应用系统化,遵从原则,可被计量的方法来发展、操作及维护软件;也就是把工程应用到软件上。3.软件工程是与开发、管理及更新软件产品有
12、关的理论、方法及工具。4.软件工程一种知识或学科,目标是生产质量良好、准时交货、符合预算,并满足用户所需的软件。5.软件工程实际应用科学知识在设计、建构计算机程序,与相伴而来所产生的文件,以及后续的操作和维护上。6.软件工程使用与系统化生产和维护软件产品有关之技术与管理的知识,使软件开发与修改可在有限的时间与费用下进行。7.软件工程是建造由工程师团队所开发之大型软件系统有关的知识学科。8.软件工程是对软件分析、设计、实施及维护的一种系统化方法。9.软件工程是以系统化地应用工具和技术于开发以计算机为主的应用。10.软件工程是关于设计和开发优质软件3.1.2开发模型概述软件工程中,常用的开发模型有
13、四种:瀑布模型、原型模型、增量模型和螺旋模型。瀑布模型包括计划,需求分析、设计、编码、测试、运行维护六个阶段,如图1所示,阶段自上而下,相互衔接,次序固定。瀑布模型具有很强的顺序性和依赖性,即:下一阶段必须以上一阶段的完成为前提。测试工作是在处于开发后期的测试阶段集中进行的,测试中可能发现大量的错误,因此必须返回需求分析、设计或编著码中定位问题,而以前认为已完成的各阶段必须修改,从而代价昂贵。 图1 瀑布模型原型模型的主要思想是先通过需求分析并建立一个软件系统的概貌原型(如图2),通过用户与开发者的评价和判断,不断的对原型进行反复的扩充、改进和求精,最终建立符合用户需求的目标系统。开发过程中可
14、能会多次生成更完善的原型,测试人员要对每个原型进行测试,并且在每个原型中投入的工作量及测试目标也将有所不同。图2 原型模型增量模型(如图3)与原型实现模型和其他演化方法一样,本质上是迭代的,但与原型实现不一样的是其强调每一个增量均发布一个可操作产品。早期的增量是最终产品的“可拆卸”版本,但提供了为用户服务的功能,并且为用户提供了评估的平台。图3 增量模型螺旋型开发模型结合了瀑布模型和原型模型的特点,并且加入了二者所忽略的风险分析。螺旋模型的每个周期都包含制定计划,风险分析、实施工程和评审四个阶段,如图4所示。开发过程每迭代一次,螺旋线就增加一周,软件开发前进一个层次,系统生成一个新版本,软件开
15、发时间与成本又有新投入,最后得到 一个用户满意的软件版本。图4 增量模型3.2确定增量模型基于实际分析后,我认为既然不能一次实现所有的软件框架,那么把需求分解,一点点的累加实现是可行的,这比较贴近增量模型的概念。于是,我把项目的需求分为多文本编辑器、文本高亮显示、插件加载实现附加功能三大块来逐步累加实现。4 Qt简介Qt是一个多平台的C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。 自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linu
16、x桌面环境KDE 的基础,KDE是所有主要的Linux发行版的一个标准组件。 4.1 Qt支持的平台1. MS/Windows - 95、98、NT 4.0、ME、和2000 2. Unix/X11 - Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX和其它很多X11平台 3. Macintosh - Mac OS X 4. Embedded - 有帧缓冲(framebuffer)支持的Linux平台。 Qt是最初奇趣科技的一个产品,是一个跨平台C+图形用户界面应用程序开发框架,2012年该公司被,Qt被Digia收购,现由其
17、维护运营。 4.2 Qt的不同发行版本Qt企业版和Qt专业版: 提供给商业软件开发。它们提供传统商业软件发行版并且提供免费升级和技术支持服务。企业版比专业版多一些扩展模块。 Qt自由版:是Qt仅仅为了开发自由和开放源码软件 提供的Unix/X11版本。在Qt公共许可证和GNU通用公共许可证 下,它是免费的。Qt/嵌入式自由版:是Qt为了开发自由软件提供的嵌入式版本。在GNU通用公共许可证下,它是免费的。5 多文本编辑器的设计和实现在多文本编辑器的实现中不得不提的是Qt用于对象间的通讯的信号/槽机制和用来实现多文档界面(Multiple Document Interface)的widget类QM
18、diArea。5.1 信号/槽机制5.1.1 信号/槽机制概述信号/槽机制是Qt的一个中心特征并且也许是Qt与其它工具包的最不相同的部分。 在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件。更一般地,我们希望任何一类的对象可以和其它对象进行通讯。例如,如果我们正在解析一个XML文件,当我们遇到一个新的标签时,我们也许希望通知列表视图我们正在用来表达XML文件的结构。 较老的工具包使用一种被称作回调的通讯方式来实现同一目的。回调是指一个函数的指针,所以如果你希望一个处理函数通知你一些事件,你可以把另一个函数(回调)的指针传递给处理函数。处理函数在适当的时候调用回调。
19、回调有两个主要缺点。首先他们不是类型安全的。我们从来都不能确定处理函数使用了正确的参数来调用回调。其次回调和处理函数是非常强有力地联系在一起的,因为处理函数必须知道要调用哪个回调。 在Qt中我们有一种可以替代回调的技术。我们使用信号和槽。当一个特定事件发生的时候,一个信号被发射。Qt的窗口部件有很多预定义的信号,但是我们总是可以通过继承来加入我们自己的信号。槽就是一个可以被调用处理特定信号的函数。Qt的窗口部件又很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号。 信号和槽的机制是类型安全的:一个信号的签名必须与它的接收槽的签名相匹配。(实际上一个槽的签名可以
20、比它接收的信号的签名少,因为它可以忽略额外的签名。)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。信号和槽是宽松地联系在一起的:一个发射信号的类不用知道也不用注意哪个槽要接收这个信号。Qt的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的:不会再有回调核心转储(core dump)。 从QObject类或者它的一个子类(比如QWidget类)继承的所有类可以包含信号和槽。当对象改变它们的状态的时候,信号被发送,从某种意义上讲,它们也许对外面的世界感兴趣。这就是所有的对象通讯时所
21、做的一切。它不知道也不注意无论有没有东西接收它所发射的信号。这就是真正的信息封装,并且确保对象可以用作一个软件组件。 槽可以用来接收信号,但它们是正常的成员函数。一个槽不知道它是否被任意信号连接。此外,对象不知道关于这种通讯机制和能够被用作一个真正的软件组件。 我们可以把许多信号和你所希望的单一槽相连,并且一个信号也可以和你所期望的许多槽相连。把一个信号和另一个信号直接相连也是可以的。(这时,只要第一个信号被发射时,第二个信号立刻就被发射。)图5是一个关于一些信号和槽连接的摘要图。总体来看,信号和槽构成了一个强有力的组件编程机制。 图5 一个关于一些信号和槽连接的摘要图5.1.2一个小例子一个
22、最小的C+类声明如下: class Foo public: Foo(); int value() const return val; void setValue( int ); private: int val; ;一个小的Qt类如下: class Foo : public QObject Q_OBJECT public: Foo(); int value() const return val; public slots: void setValue( int ); signals: void valueChanged( int ); private: int val; ;这个类有同样的内部状
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文本 编辑器 设计 实现 本科 毕业设计

链接地址:https://www.31ppt.com/p-4022746.html