




已阅读5页,还剩70页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式HTML编辑器的设计和实现摘要随着编程技术的日益大众化,普遍化,大量的编程语言被更多的人们所掌握,HTML语言作为一种简单易懂的标签语言更是倍受编码爱好者的青睐。编码语言的普及化增高随之带来的是对于编辑器功能的需求提高。一款好的编辑器不仅要实现最基本的功能,将代码语言编译成计算机可识别的机器语言;还需要具有舒适友好的编译环境界面和方便的文本处理功能。这样的编辑器有助于提高编码者的编辑效率还能提高初学者继续学习下去的兴趣。因此,为了更加方便自己的编码,提高自己的编码效率,所以自己设计实现了一款简单的可视化HTML编辑器。编辑器中实现解释标签功能主要是使用了QT中的WebKit技术,在该模块中主要有三个类分别为QWebView、QWebPage和QWebView,它们其中包含的方法就可实现HTML标签的解释功能,并可实现网页的逆解析过程,可视化界面中实现网页的浏览也是利用了这一技术,因此,这一技术是本编辑器使用的核心技术。在搭建可视化编辑器的过程中使用了大量QT中封装的类,其中最大的一个类是管理布局栈类,将水平布局和垂直布局放在其中,这样就可较方便的实现不同的布局相互切换,这样就可根据编程者的个人喜好去改变界面的布局了。本论文中重要介绍了项目的研发背景,所完成的功能和研发过程,重点讲解了主要技术、设计思想、解决方案。关键词HTML编辑器;WebKit;可视化界面;设计;iEmbeddedHTMLeditordesignandimplementationAbstractWiththegrowingpopularityofprogrammingtechniques,generalization.alotofprogramminglanguagesaremorepeopletograsp,HTMLlanguageasaneasy-to-understandlanguageismuchfavoredbytheencodinglovers.Theincreasedpopularityofcodedlanguageiseditedandbroughtdemandforimprovedfunctionality.Agoodeditornotonlytoachievethemostbasicfunction,thecodeiseditedintomachinelanguagerecognizable;Italsoneedtohaveacomfortableenvironment-friendlyinterfaceandeasytoedittextprocessingfunctions.Sucheditorshelpincreaseeditingefficiencycodingbeginnerswhocanraisetheinteresttocontinuelearningforever.Therefore,inordertomoreeasilyencodetheirowntoimprovetheircodingefficiency,sotheirdesignandimplementationofasimplevisualHTMLeditor.EditorachievedmainlyexplainedlabelsusingtheQTWebKittechnology,themodulehasthreemaincategoriesnamelyQWebView,QWebPageandQWebFramewhichcontainsmethodsthattheycanachieveexplainthefunctionalityofHTMLtags,andtoachieveinverseparsingthepage,visualinterfaceisalsoimplementedinWebbrowserstakeadvantageofthistechnology,sothistechnologyisthecoretechnologyusedintheeditor.UsethevisualeditortobuildthecourseinalotofQTtypeofpackage,thelargestofwhichisthemanagementofaclassstackclasslayout,thehorizontalandverticallayoutinwhichthelayout,soyoucanachievemoreconvenienttoswitchbetweendifferentlayoutsthiscanbebasedonthepersonalpreferencesoftheprogrammertochangethelayoutoftheinterface.Thispaperdescribesthedevelopmentofanimportantprojectbackground,functionanddevelopmentprocess,donetohighlightthemaintechnical,designideas,solutions.KeywordsHTMLeditor;WebKit;class;design;目录摘要.iAbstract.ii1引言.11.1研究现状.11.2主要研究的目的及内容.11.3研究方法及设计思路.11.3.1研究方法.11.3.2设计思路.12应用需求分析与可行性分析.32.1应用需求分析.32.2运行需求分析.32.3其他需求分析.32.4可行性分析.32.4.1经济可行性.32.4.2技术可行性.42.4.3运行可行性.42.4.4时间可行性.42.4.5法律可行性.42.5程序开发步骤.43相关技术简介.63.1QTCreator简介.63.2WebKit模块详析.63.2.1QWebView类.63.2.2QWebPage类.73.2.3QWebFrame类.73.3HTML语言介绍.84系统分析.94.1程序中使用的类及成员.94.1.1类名.94.1.2QT中的类名.104.1.3QT函数中的成员函数名及成员变量.104.2基础主控流程图.134.3成员槽函数流程图.154.4类图.195系统设计.215.1概要设计.215.2系统结构设计.215.3详细设计.215.3.1可视化主界面设计.215.3.2可视化菜单设计.245.3.3逻辑代码设计.336系统调试与测试.356.1程序调试.356.2程序的测试.356.2.1测试的重要性及目的.356.2.2测试的步骤.366.2.3测试的主要内容.36结束语.39参考文献.40致谢.41外文原文.42中文翻译.6201引言1.1研究现状编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境(InteractiveDevelopmentEnvironment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变,它现在正迅速地成为计算机科学课程中的中心环节。现在随着语言的发展,编译器也呈现出井喷式的趋势,整个编译器市场呈现出百家争鸣的态势。其中有些编译器界面设计精美舒适友好,但是功能不够完善;有些编译器功能强大,但操作过于复杂冗余;能作到面面具到的编译器是少之又少;更有些商业编译器还需要付费。因此影响了编程技术的普及广度。因此有许多代码程序员开始自己设计并实现符合自己使用习惯的编译器。这种趋势必将继续发展下去。HTML语言作为一种标签解释类语言在当前发展情况下,很少有专门的编辑器,一般情况下使用记事本工具进行编辑然后保存为html扩展名的文件,再使用浏览器打开才能查看编辑结果。这样就造成了过程操作上的繁琐,导致程序员的工作效率不高,会造成整个项目流程不能顺畅的进行下去。这些都是传统的html编辑过程的弊端。因此,本项目主要就是为了解决传统html的编写过程中编辑界面和展示界面分离的弊端,以提高工作效率。1.2主要研究的目的及内容本课题的主要目的是使HTML代码的编辑更清晰化,透明化,便于操作,使编辑过程和结果展示处于同一界面之上。通过功能模块的优化组合实现不同的编程细节,使编辑过程实现最大程度的便利,并能自动匹配标签,使编辑代码过程出错率降至最低。使用面向对象的编程理念,将编译器的主窗口封装成类。并将编译器的功能抽象为函数封装于主窗口类中。使用QTCreater工具,调用Qt封装成的函数去实现可视化的编程,并且实现HTML的正向编译、网页内容的逆向编译和编写窗口与展示窗口的布局改变。1.3研究方法及设计思路1.3.1研究方法随着编程技术的普及,开发出功能强大、界面友好舒适且操作简单的HTML编辑器就迫在眉睫了。针对上述问题,采用软件工程的开发原理,依据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个HTML的编辑器。采用QTCreator作为开发工具,基于C+语言并大量使用QT中封装的类及类的成员变量和成员函数,保证了程序运行的效率和编译的正确性。11.3.2设计思路(1)程序应满足HTML代码的正向解析和逆向解析,可以根据编辑者需求改变编辑框和展示框的布局,满足熟练编程人员和新手的日常编辑需求,并达到操作过程中的直观,方便,实用等要求;(2)系统采用模块化程序设计方法,既便于程序功能的各种组合和修改,又便于以后新功能的加入和程序的升级;(3)程序应具备基本的文本编辑功能;(4)尽量采用代码去完成界面的设计和布局,这样有利于界面控件精细化设计更有利于保存界面的美观与完整性,有益于去改动升级编译器的外观界面。22应用需求分析与可行性分析改变传统的的HTML编辑过程和展示过程异步的局面,是有效提高HTML语言编辑效率的好方法,并且为程序员提供一个舒服适合自己的编辑界面也是提高程序员编辑效率的方法,因此此编辑器应具备基本的文本编辑器的功能如改变字体大小、类型、颜色,编辑器还需要具有一个特殊功能即展示框浏览器功能,还需要具有界面布局的改变功能。2.1应用需求分析硬件处理器:Corei5M4802.67GHz双核笔记本处理器内存:3GB(DDR31333MHz/DDR31333MHz)硬盘:WDCWD5000BEKT-60KA9T0(500GB/7200转/分)程序软件QTCreator4.8.1Ubuntu12.04LTS系统的性能要求通常指系统需要的存储容量以及后援存储,重新启动和安全性,运行效率等方面的考虑。硬件系统环境:Core5600、1GMB(RAM)、120GB(HD)。系统运行时对数据的保密性要求不高对一般的数据不要求进行加密。此外,对其它软件几乎没有依赖性,程序健壮性较好2.2运行需求分析硬件条件:酷睿CPU、512MRAM、20G硬盘以上的PC机。软件条件:ubuntu12.04qtcreator以上2.3其他需求分析本系统有较好的可维护性、可靠性、可理解性、效率。易于用户理解和操作。可维护性包括了可读性、可测试性等含义。可靠性通常包括正确性和健壮性。开发过程中,在各种矛盾的目标之间作权衡,并在一定的限制的条件下(经费、时间、可用的软、硬件资源等),使上述各方面最大限度的得到满足。表2-1开发项目软硬件需求表32.4可行性分析2.4.1经济可行性经济可行性研究是对组织的经济现状和投资能力进行分析,对程序建设运行和维护费用进行估算,对程序建成后可能取得的社会和经济效益进行估计。由于本程序是作为毕业设计由我自己开发的,在经济上的投入甚微,程序建成之后将为自己和同学编译HTML代码提供很大的方便,估算新程序的开发费用和今后的运行、维护费用,估计新程序将获得的效益,并将费用与效益进行比较,看是否有利。开发、运行和维护费用主要包括:软件开发费用:由自己开发,则该项费用可以计入下面的人员费用一项;培训费用,饭费,住宿费;消耗品费用:无。所有开支都不大,只需维持自己的生活所需费用,所以经济上是可行的。2.4.2技术可行性技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。HTML编译器用的是C+开发语言,使用QTcreator编译环境编译,调试也相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于C+语言是相对底层的面向对象的编程语言,且保留有指针这种特殊类型,它们速度快、编写简单、容量大、可靠性能高、价格低,完全能满足系统的需求。2.4.3运行可行性对新编译器运行后给现行编译器带来的影响(包括编程习惯、编程效率、工作环境等)进行估计和评价。同时还应考虑现有编码者使用、新特性的补充,分析在给定时间里能否完成预定的程序开发任务等。运行可行性是对编程习惯的影响,编程效率和环境对程序的适应性及编码者对程序新特性的了解学习计划的可行性。当前对于已经形成根深蒂固编码习惯的编码者来说改变编码风格有些困难,但有适合自己的新特性产生时也是可以接受的;对于新手来说去适应并形成程序的编码习惯是很容易的,所以在程序的运行上是可行性的。本程序的开发使用QTCreator的编译环境,主要运用其中的WebKit模块技术实现核心的编译过程。2.4.4时间可行性从时间上看,在实训的的时间里学习了相关知识,并开发了HTML编译器,时间上是有点紧,有些功能不够完善且界面也不够美观,但大体功能已经都实现,通过两个月的设计实现项目基本完成。2.4.5法律可行性所有技术资料都为合法。开发过程中使用的开源开发工具不存在知识产权问题。未抄袭任何已存在的HTML编译器,不存在侵犯版权问题。开发过程中,是以开发编译器模型为目的的未涉及任何法律责任。综上所述,本程序的开发从技术上、从经济上、从法律上都是完全可靠的。42.5程序开发步骤一般说来,这种程序的开发大致可经过概要设计和详细设计两过程。上述各个过程排列成一个严格的线性开发序列,在每个工作过程中均可产生完整的技术文档作为下一阶段工作的指导和依据,每一阶段都应对文档进行评审,确信该阶段工作已完成并达到要求后才能进入下一阶段,同时在以后的工作中不能轻易改变前面经过评审的成果。上述开发方式的主要优点是便于开发工作的组织和管理,并且可大大降低程序开发的复杂性。国内外许多程序开发的实例都证明这是一种行之有效的开发方式。国外曾有人对一些软件项目开发各阶段的工作量进行了统计,结果表明,在开发过程中各工作阶段所占全部工作量的比重分别达到系统分析:系统设计:编程:模块调试:系统调试20%:15%:20%:25%:20%。由此可见,程序编写在开发工作中只占很小比例,而调试工作却占整个开发工作量的一半左右,因此“系统开发就是编程”的习惯说法显然是片面的。另据统计,在建立管理信息系统的三个阶段中,总体规划和系统开发阶段的工作量约占整个工作量的2/3,而运行、维护阶段要占1/3,这说明一个管理信息系统开发后,仍应十分重视它的维护工作,以便使程序不断完善并充分发挥其作用。53相关技术简介3.1QTCreator简介QtCreator的是一个跨平台的IDE(集成开发环境),以量身打造的Qt开发人员的需求。是Qt项目的一部分。先进的代码编辑器QtCreator的重点是提供功能,可帮助新Qt用户启动和运行速度更快,同时也促进经验丰富的Qt开发人员的生产力。用C+、QML和ECMAScript的支持代码编辑器快速的代码导航工具语法高亮和代码完成在您键入静态代码检测和风格的提示支持源代码重构上下文敏感的帮助代码折叠括号匹配和括号选择模式可视化调试器该可视化调试器的C+是知道许多Qt类的结构,从而提高了其显示Qt的数据清楚地能力。此外,QtCreator的显示从GDB的清晰和简明的方式的原始信息。中断程序的执行。通过该计划的行由行或指令由指令步骤。设置断点。检查调用栈内容,观察家,以及局部和全局变量。GUI设计师集成的GUI布局和形式建造者为C+项目,它允许您快速设计,并使用通过,将在你的应用程序中使用相同的部件屏幕上的形式建立窗体和对话框。形式是全功能的,并且他们可以立即预览,以确保它们的外观和感觉完全按您预期。3.2WebKit模块详析QtWebKit的依赖于QtGui。QwebView可以用于打开多个网页,而里面具体的网页对象是QWebPage,QWebPage通过mainframe()方法可以得到。3.2.1QWebView类QWebView类提供了用于查看和编辑网页的小工具。QWebView是主要部件组成QtWebView的网页浏览模块。它可以用在各种应用程序中显示从因特网获取的网页内容。一个网站可以用load()函数加载到QWebView类中图3-1WebKit6。像所有的Qtwidget控件都需要借助show()来显示。并且setUrl()也可以被用于加载一个网站。如果有完善的HTML内容,也可以使用setHtml()来代替。当视图开始加载时,loadstarted()函数会发送一个信号。每当网络视图中的一个元素正在完成加载时,loadProgress()函数就会发送一个信号,如嵌入图像,脚本等。当视图已经完成加载后,loadFinished()会发出一个信号,返回的参数true或false,表示成功与失败。page()函数返回一个指向网页的对象的指针。可以使用QWebSettings类的成员函数settings()去修改web视图的设置。使用QWebSettings类可以修改如JavaScript和插件等的默认字体,启用或禁用功能。一个HTML文件的title属性可以用title()访问对应属性。此外,网站还可以指定一个图标icon属性,icon属性可以使用icon()函数获得。如果title和icon属性发生改变时,函数titlechanged()和titlechanged()会发送对应信号。textSizeMultiplier()可以修改在网页视图中显示的整体文本大小。更多的功能,例如重新加载视图,选定的文本复制到剪贴板,或者粘贴到视图,也封装在内部的QAction类的对象内,这些可以通过pageAction()函数返回到QAction类的对象的。这些操作可以通过使用triggerPageAction()函数去触发,这些操作可以直接添加到工具栏或菜单中去。QWebView类维持着这些操作的返回状态,但是允许操作属性的修改,如文本和图标。一个QWebView类可以通过print()函数打印在QPrinter类中。这个函数被定义为槽函数,并且可以被QPrintPreviewDialog类的paintRequested()函数发送的信号所连接。如果需要提供的网站,允许用户打开新的窗口,如弹出窗口的支持,可以继承QWebView类并且重新实现CreateWindow()函数。3.2.2QWebPage类QWebPage类提供了一个对象来查看和编辑网页文件。QWebPage有主框架负责网页内容,设置导航的链接和操作的历史。这个类可以和QWebFrame类在一起使用,以提供功能像类QWebView在awidget-less环境。QWebPage的API与QWebView的非常相似,例如被提供的常见功能,如action()(QWebView类的pageAction()方法)、triggerAction()、findText()和settings()。更多的QWebView类中的函数可以在QWebPage的主框架中,可以通过mainFrame()函数找到。例如QWebPage类中的load()、setUrl()和setHtml()可以使用QWebFrame类去访问。当网页开始加载时loadStarted()函数会发出信号。每当网页中的一个元素正在完成加载时,loadProgress()函数就会发送一个信号,如嵌入图像,脚本等。当网页内容已经完成加载后,loadFinished()会发出一个信号,独立于脚本执行,返回的参数true或false,表示成功与失败。3.2.3QWebFrame类QWebFrame类表示一个web页面的框架。QWebFrame表示内部网页中的框架,每个QWebPage对象包含至少一个框架,想要获得就使用QWebPage:mainFrame()函数,额外的框架使用HTMLor元素去构建。一个框架可以使用load()或setUrl()去加载,另外,如果有完善的HTML内容,也可以使用setHtml()来代替。page()函数返回一个指向网页对象的指针。该QWebFrame类还提供了方法来检索目前由框架加载的URL(7如url()),以及作为URL最初请求被加载(如requestedUrl()),这些方法使得有可能在URL之前和之后的DNS解析或重定向检索在加载过程中发生。如果加载成功,该requestedUrl()也匹配到URL添加到框架历史(QWebHistory)。一个HTML文件的title属性可以用title()访问对应属性。此外,网站还可以指定一个图标icon属性,icon属性可以使用icon()函数获得。如果title和icon属性发生改变时,函数titlechanged()和titlechanged()会发送对应信号。textSizeMultiplier()可以修改在网页视图中显示的整体文本大小QWebFrame对象被创建,并且被网页控制。当一个新的框架被创建,信号就会发给网页的frameCreated()函数。有多种方法可以检查一个框架的内容,hitTestContent()函数可以被用来找到坐标元素,documentElement()、findAllElements()、findFirstElement(),可以用来访问底层DOM树。一个QWebFrame类可以通过print()函数打印在QPrinter类中。这个函数被定义为槽函数,并且可以被QPrintPreviewDialog类的paintRequested()函数发送的信号所连接。3.3HTML语言介绍HTML或超文本标记语言是用来制作网页的标准标记语言。HTML是写在HTML元素组成的尖括号标记(如)的形式。HTML标签最常用来像和对,虽然有些标签代表空元素,所以是不成对的,例如。在一对的第一个标签是开始标签,第二个标签是结束标记(他们也被称为开放标签和结束标签)。web浏览器的目的是读取HTML文档和它们组合成可见的或可听的网页。浏览器不显示HTML标记,而是使用标签来解释页面的内容。HTML描述了网站的结构语义以及线索呈现,使之成为一种标记语言,而不是一种编程语言。HTML元素形成的所有网站的基石。HTML允许图像和对象将要被嵌入,并且可以用于创建交互式表单。它提供了表示为文字,如标题,段落,列表,链接,报价和其他物品的结构语义来创建结构化文档的方法。它可以嵌入语言编写的(如JavaScript)影响的HTML网页的行为脚本。Web浏览器也可以指层叠样式表(CSS)来定义文本和其他材料的外观和布局。W3C的,维护者的HTML和CSS的标准,鼓励使用CSS在明确表象的HTML。HTML有很多的版本,下面介绍一下其发展史。HTML2.0这已作为一个IETFRFC于1995年,由一些浏览器如马赛克得到了支持。HTML3.2这个版本是第一个W3C建议。它有更广泛的浏览器支持(部分原因是因为有很多更多的浏览器)。它成为1997年1月的建议。HTML4.0和HTML4.011997年12月,W3C发布这个升级为HTML3.2的建议。它增加了更多的功能和标签并提供了三个版本:过渡性的,严格的,和框架。这是更新到4.011999年12月有一些变化的规范。XHTML1.0XHTML1.0是HTML4.01的XML的下一个规则的改写,它已作为一项建议是由W3C于2000年1月它有更严格的语法,并要求所有的XHTML是有效的,良好的,以正确显示。大多数Web浏览器呈现XHTML1.0文档相同的,因为它们呈现HTML4.01文档。HTML5HTML5开始被开发在2004年,当W3C的HTML工作组决定合并的HTML和XHTML树做的HTML纯粹的基于XML的语言。这让设计师和谁想要一个更灵活的解决方案与选择放弃或创建自己的新规范的浏览器厂商。他们创造了一种称为We8b超文本应用技术工作组或WHATWG新组。HTML5在2008年成为一个W3C工作草案。4系统分析4.1程序中使用的类及成员4.1.1类名Previewer(实体类)MainWindow(主窗口类)以下为主要类中使用的方法名:Application类中的方法(无成员变量)intexec()进入主事件循环等待退出函数发送信号Previewer类中的方法(无成员变量)publicPreviewer()构造函数参数及初值:QWidget*parent=0publicvoidon_previewButton_clicked()点击编译按钮发生的事件函数(槽函数)MainWindow类中的方法及成员变量publicMainWindow()构造函数(无参)privatevoidopen()打开文件函数(槽函数)privatevoidopenUrl()打开地址输入栏函数(槽函数)privatevoidabout()打开程序介绍窗口函数(槽函数)privatevoidsave()保存编辑好的文本内容函数(槽函数)privatevoidupdateTextEdit()显示解释后网页内容的函数(槽函数)privatevoidcreateActions()创建事件函数即成员变量赋值函数privatevoidcreateMenus()创建菜单事件函数privatevoidsetStartupText()文本框初始化文本函数privatePreviewer*centralWidget编辑器类的指针对象privateQMenu*fileMenu文件菜单指针privateQMenu*helpMenu帮助菜单指针privateQAction*openAct打开文件事件指针privateQAction*openUrlAct打开网址事件指针privateQAction*saveAct保存文本事件指针9privateQAction*exitAct退出事件指针privateQAction*aboutAct关于帮助事件指针privateQAction*aboutQtAct关于QT帮助事件指针以下为槽函数的名称:Previewer类中具有以下一个槽函数publicvoidon_previewButton_clicked()点击解释按钮发生事件函数MainWindow类中具有以下若干槽函数privatevoidopen()打开文件函数privatevoidopenUrl()打开地址输入栏函数privatevoidabout()打开程序介绍窗口函数privatevoidsave()保存编辑好的文本内容函数privatevoidupdateTextEdit()显示解释后网页内容的函数4.1.2QT中的类名QMainWindow(主窗体类)QMenu(菜单类)QAction(活动类)QWidget(窗口事件反应类)QMessgeBox(信息打印类)QMenuBar(菜单列表类)QFileDialog(文件对话类)QFile(文件类)QIODevice(输入输出设备类)QTextStream(文本流类)QInputDialog(输入对话类)QLineEdit(行编译类)QPlainTextEdit(文本编译类)QWebView(网页浏览类)QWebFrame(网页框架类)QApplication(应用程序类)QAbstractTransition(抽象转换类)QObject(实体类)QString(字符串类)QWebPage(网页类)QDialog(对话类)QCoreApplication(核心应用程序类)4.1.3QT函数中的成员函数名及成员变量QMainWindow类中的方法名(无成员变量)voidsetCentralWidget()设置主窗口的中心组件QMenuBar*menuBar()创建下拉列表voidshow()显示图形化界面QMenu类中的方法名(无成员变量)QAction*addAction()下拉列表中添加选项及对应事件QAction*addSeparator()在一个下拉列表中分区域10QAction类中的方法名(无成员变量)voidsetShortcut()设置选项的对应快捷键voidsetStatusTip()初始化下拉列表中选项键的状态标签QMessgeBox类中的方法名(无成员变量)voidabout()弹出文本提示框StandardButtoninformation()弹出一个信息提示框enumStandardButton标准按键QMenuBar类中的方法名(无成员变量)QMenu*addMenu()菜单栏中增加选项下拉列表QAction*addSeparator()划分隔线QFileDialog类中的方法名(无成员变量)QStringgetOpenFileName()打开目录选取所需打开的文件QFile类中的方法名(无成员变量)boolopen()打开文件流QIODevice类中的方法名(无成员变量)ReadOlny宏只读WriteOnly宏只写QStringerrorString()输出错误信息QTextStream类中的方法名(无成员变量)QStringreadAll()读取所有文件内容QInputDialog类中的方法名(无成员变量)QStringgetText()得到文本QStringgetSaveFileName()打开保存目录,保存到所需的目录内QLineEdit类中的方法名(无成员变量)enumEchoMode设置怎样显示输入的文本QPlainTextEdit类中的方法名(无成员变量)voidsetPlainText()将打开的文件中的内容写入文本输入框voidtoPlainText()将HTML转换成纯文本QWebView类中的方法名(无成员变量)boolloadFinished()发送网页加载完成的信号voidsetUrl()清空浏览器并加载新输入的网址QWebPage*page()返回一个潜在的网页指针voidsetHtml()将字符串内容编译成HTML语言QApplication类中的方法名(无成员变量)intexec()进入主事件循环等待退出函数发送信号QAbstractTransition类中的方法名(无成员变量)voidtriggeried()触发器函数QObject类中的方法名(无成员变量)boolconnect()将槽函数和对应可视化组件用信号关联起来QStringtr()字符串消除歧义,使其统一化QString类中的方法名(无成员变量)boolisEmpty()判断是空QWebPage类中的方法名(无成员变量)11QWebFrame*mainFrame()返回网页的框架结构QWebFrame类中的方法名(无成员变量)QStringtoHtml()将网页逆编译成HTML语言4.2基础主控流程图程序启动编译器可视化界面启动Y.文本框输入操作N.菜单栏点击选择在输入框中HTML语言的输入Y。输入完成点击完成键N。菜单栏点击选择在菜单栏中选择用户需要的功能Y.打开file选项N.打开help选项NNY显示框中显示编辑后的网页界面Y.点击关闭按钮N.继续其他操作N程序关闭Y在help下拉列表中选择所需功能在file下拉列表中选择所需功能Y.aboutN.aboutQTY.打开,保存,打开地址N.关闭显示项目介绍显示QT的帮助文档YNNYNY.打开,打开地址N.保存YYNY12以上是打开文本槽函数的流程图,调用了QFileDialog类,弹出了打开文本对话框图4-1主控流程图134.3成员槽函数流程图图2打开函数的流程图图3打开文件流程图开始getOpenFileNamed打开文件目录isEmpty()文件打开成功结束NQFile的对象file初始化YOpen(ReadOnly)打开的文件为可读弹处错误提示框Unabletoopenfileinformation()N生成文件流对象QTextStreamY读取文件流readAll()将读取的文件流信息写入文本编辑框setPlainText()Open()图4-2打开文件流程图以下流程图为打开文本函数的流程图,弹出打开文件对话框,描述了打开html文本文件的过程。14以上两个流程图为打开网址函数的流程和逆解析函数的流程。打开网址的过程是弹出网址对话框后进行的操作。开始QWebFrame的对象创建,获得网页信息将QWebFrame的对象获得的网页逆编译成htnl语言文本将获得的文本打印到窗口文本框中结束updateTextEdit()openUrl()开始得到输入栏中的网址字符串getText()ok选项网址字符串为空isEmpty()Y通过输入的网址打开对应网站setUrl()结束YNN图4-3逆解析流程图图4-4逆解析流程图15以上流程图为保存文本函数的流程图,弹出保存文件对话框,描述了保存文本信息的过程。开始Save()获取并转换用户在文本框中的输入HTML为纯文本获得保存文本的文件名getSaveFileName()文件名是空isEmpty()生成文件流对象QTextStreamQFile的对象file初始化结束打开文件为可写Open(WriteOnly)NY将文本内容写入文件流中弹处错误提示框Unabletoopenfileinformation()NY图4-5保存函数的流程图164.4类图+setCentralWidget():void+menuBar():QMenuBar*QMainWindow+MainWindow()-createActions():void-creatMenus():void-setStartupText():void-open():void-openUrl():void-about():void-save():void-updateTextEdit():void-centralWidget:previewer*-fileMenu:QMenu*-helpMenu:QMenu*-openAct:QAction*-saveAct:QAction*-openUrlAct:QAction*-exitAct:QAction*-aboutAct:QAction*-aboutQtAct:QAction*MainWindow+addAction():QAction*+addSeparator():QAction*QMenuQWidget+Previewer()+on_previewButton_clicked():voidpreviewer+setShortcut():void+setStatusTip()QAction+exec()Qapplication+about():void+information():StandardButton-StandardButton:enumintQMessageBox+addMenu():QMenu*+addSeparator():QAction*QMenuBar+getOpenFileName():QStringQFileDialog+open():boolQFile+errorString():QString-ReadOlny-WriteOnlyQIODevice+readAll():QStringQTextStream+getText():QString+getSaveFileName():QStringQInputDialog-EchoMode:enumintQLineEdit+setPlainText():void+toPlainText():voidQPlainTextEdit+loadFinished():bool+setUrl():void+page():QWebPage*+setHtml():voidQWebViewQWebFrameStandardButton+isEmpty():boolQString+mainFrame():QWebFrame*QWebPage+triggeried():voidQAbstractTransition+connect():bool+tr():QStringQObject+toHtml():QStringQWebFrameQDialogQCoreApplication图4-6主要类的类图17以上为本程序中主要使用的类的类图,其中有26个类,其中QT中所有的类的父类是QObje
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度高端住宅区生态园林景观设计施工综合管理合同
- 2025年智能办公空间电梯装饰美化与系统维护服务合同
- 2025年学校周边商铺租赁及品牌加盟合作协议
- 2025年度证券公司交易信息保密及合规处理合同
- 2025年绿色养殖技术引进与应用推广合同
- 2025年度个性化离婚协议起草与执行指导手册
- 2025年荒山生态修复与农业综合开发项目承包合同
- 地板知识培训横幅标语课件
- 2025年城市老旧小区改造工程招标代理全面实施合同
- 2025年全民健身中心运动器材采购与全面维修服务合同
- GB/T 9871-2008硫化橡胶或热塑性橡胶老化性能的测定拉伸应力松弛试验
- GB/T 26480-2011阀门的检验和试验
- GB/T 19861-2005丙烯酸系阴离子交换树脂强碱基团、弱碱基团和弱酸基团交换容量测定方法
- GB/T 11085-1989散装液态石油产品损耗
- GB 30000.3-2013化学品分类和标签规范第3部分:易燃气体
- 《材料力学》说课-课件
- (完整版)沪教牛津版小学一至六年级英语单词汇总(最新)
- JJF 1587-2016 数字多用表校准规范-(高清现行)
- 完整课件-西方经济学下册(第二版)
- 机械制图教学通用课件(全套)
- 天星择日的基本原理
评论
0/150
提交评论