嵌入式HTML编辑器的设计和实现
摘要
随着编程技术的日益大众化,普遍化,大量的编程语言被更多的人们所掌握,HTML语言作为一种简单易懂的标签语言更是倍受编码爱好者的青睐。编码语言的普及化增高随之带来的是对于编辑器功能的需求提高。一款好的编辑器不仅要实现最基本的功能将代码语言编译成计算机可识别的机器语言还需要具有舒适友好的编译环境界面和方便的文本处理功能。这样的编辑器有助于提高编码者的编辑效率还能提高初学者继续学习下去的兴趣。因此为了更加方便自己的编码提高自己的编码效率所以自己设计实现了一款简单的可视化HTML编辑器。
编辑器中实现解释标签功能主要是使用了QT中的WebKit技术在该模块中主要有三个类分别为QWebView、 QWebPage和QWebView,它们其中包含的方法就可实现HTML标签的解释功能并可实现网页的逆解析过程可视化界面中实现网页的浏览也是利用了这一技术因此这一技术是本编辑器使用的核心技术。在搭建可视化编辑器的过程中使用了大量QT中封装的类其中最大的一个类是管理布局栈类将水平布局和垂直布局放在其中这样就可较方便的实现不同的布局相互切换这样就可根据编程者的个人喜好去改变界面的布局了。
本论文中重要介绍了项目的研发背景所完成的功能和研发过程重点讲解了主要技术、设计思想、解决方案。
关键词 HTML编辑器 WebKit 可视化界面 设计
Embedded HTML editor design and implementation
Abstract
With the growing popularity of programming techniques , generalization . a lot ofprogramming languages are more people to grasp , HTML language as an easy-to-understand language is much favored by the encoding lovers.The increased popularity ofcoded language is edited and brought demand for improved functionality.A good editor notonly to achieve the most basic function , the code is edited into machine languagerecognizable ; It also need to have a comfortable environment -friendly interface and easy toedit text processing functions. Such editors help increase editing efficiency coding beginnerswho can raise the interest to continue learning forever.Therefore , in order to more easilyencode their ownto improve their coding efficiency, so their design and implementation ofasimple visual HTML editor.
Editor achieved mainly explained labels using the QT WebKit technology, the module hasthree main categories namely QWebView,QWebPage and QWebFrame which containsmethods that they can achieve explain the functionality of HTML tags,and to achieve inverseparsing the page,visual interface is also implemented in Web browsers take advantage of thistechnology, so this technology is the core technology used in the editor.Use the visual editorto build the course in a lot of QT type ofpackage, the largest of which is the management ofa class stack class layout, the horizontal and vertical layout in which the layout, so you canachieve more convenient to switch between different layouts this can be based on thepersonal preferences of the programmer to change the layout of the interface.
This paper describes the development of an important project background, function anddevelopment proces s ,done to highlight the main technical ,design ideas, so lutions.Key words HTMLeditor;WebKit;class;design;
目录
摘要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .i
Abstract. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ii
1 引言. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1. 1 研究现状. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1.2 主要研究的目的及内容. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1.3 研究方法及设计思路. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1.3. 1 研究方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1.3.2 设计思路. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
2 应用需求分析与可行性分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
2. 1 应用需求分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
2.2 运行需求分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
2.3 其他需求分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
2.4 可行性分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
2.4. 1 经济可行性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
2.4.2 技术可行性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
2.4.3 运行可行性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
2.4.4 时间可行性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
2.4.5 法律可行性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
2.5 程序开发步骤. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
3 相关技术简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
3. 1 QT Creator简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
3.2 WebKit模块详析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
3.2. 1 QWebView类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
3.2.2 QWebPage类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
3.2.3 QWebFrame类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
3.3 HTML语言介绍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
4 系统分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
4. 1 程序中使用的类及成员. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
4. 1. 1 类名. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
4. 1.2 QT中的类名. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
4. 1.3 QT函数中的成员函数名及成员变量. . . . . . . . . . . . . . . . . . . . . . . . . . . .10
4.2 基础主控流程图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
4.3 成员槽函数流程图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
4.4 类图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
5 系统设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
5. 1 概要设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
5.2 系统结构设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
5.3 详细设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
5.3. 1 可视化主界面设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
5.3.2 可视化菜单设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
5.3.3 逻辑代码设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
6 系统调试与测试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32
6. 1 程序调试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32
6.2 程序的测试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32
6.2. 1 测试的重要性及目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32
6.2.2 测试的步骤. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
6.2.3 测试的主要内容. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
结束语. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
致谢. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
外文原文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
中文翻译. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
1 引言
1 . 1 研究现状
编译器设计最近的发展包括首先编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-M ilner类型检查的统一算法。其次编译器已越来越成为基于窗口的交互开发环境Interac tive De ve lop me nt Enviro nme nt I D E的一部分它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的ID E标准并没有多少但是对标准的窗口环境进行开发已成为方向。另一方面尽管近年来在编译原理领域进行了大量的研究但是基本的编译器设计原理在近20年中都没有多大的改变它现在正迅速地成为计算机科学课程中的中心环节。
现在随着语言的发展编译器也呈现出井喷式的趋势整个编译器市场呈现出百家争鸣的态势。其中有些编译器界面设计精美舒适友好但是功能不够完善有些编译器功能强大但操作过于复杂冗余能作到面面具到的编译器是少之又少更有些商业编译器还需要付费。因此影响了编程技术的普及广度。因此有许多代码程序员开始自己设计并实现符合自己使用习惯的编译器。这种趋势必将继续发展下去。
HTML语言作为一种标签解释类语言在当前发展情况下,很少有专门的编辑器,一般情况下使用记事本工具进行编辑然后保存为ht ml扩展名的文件再使用浏览器打开才能查看编辑结果。这样就造成了过程操作上的繁琐导致程序员的工作效率不高会造成整个项目流程不能顺畅的进行下去。这些都是传统的ht ml编辑过程的弊端。因此本项目主要就是为了解决传统ht ml的编写过程中编辑界面和展示界面分离的弊端 以提高工作效率。
1 .2 主要研究的目的及内容
本课题的主要目的是使HTM L代码的编辑更清晰化透明化便于操作使编辑过程和结果展示处于同一界面之上。通过功能模块的优化组合实现不同的编程细节使编辑过程实现最大程度的便利,并能自动匹配标签,使编辑代码过程出错率降至最低。
使用面向对象的编程理念将编译器的主窗口封装成类。并将编译器的功能抽象为函数封装于主窗口类中。使用QT Creater工具调用Qt封装成的函数去实现可视化的编程并且实现HTM L的正向编译、 网页内容的逆向编译和编写窗口与展示窗口的布局改变。
1 .3 研究方法及设计思路
1 .3. 1 研究方法
随着编程技术的普及开发出功能强大、界面友好舒适且操作简单的HTML编辑器就迫在眉睫了。针对上述问题采用软件工程的开发原理依据软件流程过程规范按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个HTML的编辑器。采用QT Creator作为开发工具基于C++语言并大量使用QT中封装的类及类的成员变量和成员函数保证了程序运行的效率和编译的正确性。
1 .3.2 设计思路
1程序应满足HTML代码的正向解析和逆向解析可以根据编辑者需求改变编辑框和展示框的布局满足熟练编程人员和新手的日常编辑需求并达到操作过程中的
直观方便实用等要求
2系统采用模块化程序设计方法既便于程序功能的各种组合和修改又便于以后新功能的加入和程序的升级
3程序应具备基本的文本编辑功能
4尽量采用代码去完成界面的设计和布局这样有利于界面控件精细化设计更有利于保存界面的美观与完整性有益于去改动升级编译器的外观界面。
2 应用需求分析与可行性分析
改变传统的的HTML编辑过程和展示过程异步的局面是有效提高HTM L语言编辑效率的好方法并且为程序员提供一个舒服适合自己的编辑界面也是提高程序员编辑效率的方法因此此编辑器应具备基本的文本编辑器的功能如改变字体大小、类型、颜色编辑器还需要具有一个特殊功能即展示框浏览器功能还需要具有界面布局的改变功能。
2. 1 应用需求分析
表2-1开发项目软硬件需求表
系统的性能要求通常指系统需要的存储容量以及后援存储重新启动和安全性,运行效率等方面的考虑。
硬件系统环境 Core 5600、 1G MBRAM、 120GBHD。系统运行时对数据的保密性要求不高对一般的数据不要求进行加密。此外对其它软件几乎没有依赖性程序健壮性较好
2.2 运行需求分析
硬件条件酷睿CPU、 512M RAM、 20G硬盘以上的PC机。
软件条件 ubuntu12.04 qt creator以上
2.3 其他需求分析
本系统有较好的可维护性、可靠性、可理解性、效率。易于用户理解和操作。可维护性包括了可读性、可测试性等含义。可靠性通常包括正确性和健壮性。开发过程中在各种矛盾的目标之间作权衡并在一定的限制的条件下经费、时间、可用的软、硬件资源等使上述各方面最大限度的得到满足。
2.4 可行性分析
2.4. 1 经济可行性
经济可行性研究是对组织的经济现状和投资能力进行分析对程序建设运行和维护费用进行估算对程序建成后可能取得的社会和经济效益进行估计。 由于本程序是作为毕业设计由我自己开发的在经济上的投入甚微程序建成之后将为自己和同学编译HTML代码提供很大的方便估算新程序的开发费用和今后的运行、维护费用估
计新程序将获得的效益并将费用与效益进行比较看是否有利。开发、运行和维护费用主要包括
软件开发费用 由自己开发则该项费用可以计入下面的人员费用一项培训费用饭费住宿费消耗品费用无。所有开支都不大只需维持自己的生活所需费用所以经济上是可行的。
2.4.2 技术可行性
技术可行性要考虑现有的技术条件是否能够顺利完成开发工作软硬件配置是否满足开发的需求等。HTML编译器用的是C++开发语言使用Q T c reato r编译环境编译调试也相对简单 当前的计算机硬件配置也完全能满足开发的需求 因此在技术上是绝对可行的。软件方面 由于C++语言是相对底层的面向对象的编程语言且保留有指针这种特殊类型,它们速度快、编写简单、容量大、可靠性能高、价格低完全能满足系统的需求。
2.4.3 运行可行性
对新编译器运行后给现行编译器带来的影响包括编程习惯、编程效率、工作环境等进行估计和评价。同时还应考虑现有编码者使用、新特性的补充分析在给定时间里能否完成预定的程序开发任务等。
运行可行性是对编程习惯的影响编程效率和环境对程序的适应性及编码者对程序新特性的了解学习计划的可行性。当前对于已经形成根深蒂固编码习惯的编码者来说改变编码风格有些困难但有适合自己的新特性产生时也是可以接受的对于新手来说去适应并形成程序的编码习惯是很容易的所以在程序的运行上是可行性的。
本程序的开发使用QT Creator的编译环境主要运用其中的WebK it模块技术实现核心的编译过程。
2.4.4 时间可行性
从时间上看在实训的的时间里学习了相关知识并开发了HTML编译器时间上是有点紧有些功能不够完善且界面也不够美观但大体功能已经都实现通过两个月的设计实现项目基本完成。
2.4.5 法律可行性
①所有技术资料都为合法。
②开发过程中使用的开源开发工具不存在知识产权问题。
③未抄袭任何已存在的HTML编译器不存在侵犯版权问题。
④开发过程中是以开发编译器模型为目的的未涉及任何法律责任。
综上所述本程序的开发从技术上、从经济上、从法律上都是完全可靠的。
2.5 程序开发步骤
一般说来这种程序的开发大致可经过概要设计和详细设计两过程。上述各个过程排列成一个严格的线性开发序列在每个工作过程中均可产生完整的技术文档作为下一阶段工作的指导和依据每一阶段都应对文档进行评审确信该阶段工作已完成并达到要求后才能进入下一阶段 同时在以后的工作中不能轻易改变前面经过评审的成果。
上述开发方式的主要优点是便于开发工作的组织和管理并且可大大降低程序开发的复杂性。 国内外许多程序开发的实例都证明这是一种行之有效的开发方式。
国外曾有人对一些软件项目开发各阶段的工作量进行了统计结果表明在开发过程中各工作阶段所占全部工作量的比重分别达到系统分析系统设计编程模块调试系统调试20% 15% 20% 25% 20%。 由此可见程序编写在开发工作中只占很小比例而调试工作却占整个开发工作量的一半左右因此“系统开发就是编程”的习惯说法显然是片面的。另据统计在建立管理信息系统的三个阶段中总体规划和系统开发阶段的工作量约占整个工作量的2/3而运行、维护阶段要占1/3这说明一个管理信息系统开发后仍应十分重视它的维护工作 以便使程序不断完善并充分发挥其作用。
CloudCone商家我们很多喜欢低价便宜VPS主机的肯定是熟悉的,个人不是特别喜欢他。因为我之前测试过几次,开通的机器IP都是不通的,需要删除且开通好几次才能得到一个可用的IP地址。当然他们家的优势也是有的,就是价格确实便宜,而且还支持删除重新开通,而且机房只有一个洛杉矶MC。实话,如果他们家能多几个机房,保持现在的特点,还是有很多市场的。CloudCone是来自美国的主机销售商,成立于2017...
Pia云商家在前面有介绍过一次,根据市面上的信息是2018的开办的国人商家,原名叫哔哔云,目前整合到了魔方云平台。这个云服务商家主要销售云服务器VPS主机业务和服务,云服务器采用KVM虚拟架构 。目前涉及的机房有美国洛杉矶、中国香港和深圳地区。洛杉矶为crea机房,三网回程CN2 GIA,自带20G防御。中国香港机房的线路也是CN2直连大陆,比较适合建站或者有游戏业务需求的用户群。在这篇文章中,简...
4324云是成立于2012年的老牌商家,主要经营国内服务器资源,是目前国内实力很强的商家,从价格上就可以看出来商家实力,这次商家给大家带来了全网最便宜的物理服务器。只能说用叹为观止形容。官网地址 点击进入由于是活动套餐 本款产品需要联系QQ客服 购买 QQ 800083597 QQ 2772347271CPU内存硬盘带宽IP防御价格e5 2630 12核16GBSSD 500GB30M1个IP...