博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++课设/大作业/简化版WPS
阅读量:3958 次
发布时间:2019-05-24

本文共 3609 字,大约阅读时间需要 12 分钟。

C++团队/个人课设/大作业去年初稿

工具QT

需求分析

我的简化版WPS应用程序根据功能可分为:文件、编辑、格式、窗体,帮助四个大的功能模块。具体功能如下:

文件:新建文档、打开文档、文档保存、文档另存为、打印、打印预览和退出;
编辑:撤销、重做、剪切、复制、粘贴;
格式:字体加粗、字体倾斜、字体下划线、段落左对齐、段落居中、段落右对齐、段落两端对齐、字体颜色调整和项目符号;
窗体:关闭、关闭所有、平铺、层叠、下一个,前一个
帮助:关于

详细设计

本章是根据软件工程知识,对概要设计的具体实现。通过对每个模块的功能进行描述,对功能需求进行分析,编写代码,最终展示出相应的页面。使得整个设计变成一个可运行物理实体,从而达到本次设计的最终目的。

4.1 菜单项工具栏
在ui界面设计模式下,逐项添加菜单工具栏,分别添加文件、编辑、格式、窗体、帮助五个父菜单栏选项,之后分别向五个父菜单栏选项中添加其对应的子功能菜单选项。
在添加好菜单栏选项之后,分别设置每个功能菜单子选项的对象名,状态提示、快捷键和对应的ico图标。设置完成之后,将常用的功能添加到工具列中,不同功能模块之间可以使用分隔符隔开。
最后就可以添加字体组合框(QFontComboBox)、字号组合框(QComboBox)、项目组合框(QComboBox),这样菜单工具栏的界面设计便已完成。
4.2 新建文档
自定义类ChildWnd,该类继承自QTextEdit类。新建文档时使用” WPS 文档 index ”作为新建子窗口的窗口标题,设置窗口标题应该添加 “[]” 占位符,该事件与文档窗口的contentsChanged信号建立连接,一旦文档内容发生改变,就会触发事件,调用文档的isModified去设置modified属性,使得窗口标题中的占位符填充,从而达到文档修改后窗口标题就会出现 ‘’ 号标志位的效果。
在新建文档的函数中,向多文档区域添加子窗口,并且建立槽函数,当用户点击”新建“的按钮后,触发该事件,就会在多文档区域新建一个子窗口。为实现该功能需要将子窗口的copyAvailable(在文本编辑中选择或取消选择文本时,将发出此信号)信号与剪切和复制按钮建立连接,一旦接收到此信号,就将剪切和复制按钮设置为可用(将以深黑色的方式显示)。
4.3 活动子窗口
首先需要在后缀为pro的项目中添加RC_ICONS += images/wps.ico语句,以此来设置WPS应用程序的ico图标。在ui文件中设置WindowTitle为”我的WPS“。
在父级菜单选项的”菜单“选项中,添加关闭窗口、关闭所有窗口、平铺、层叠、下一个、前一个子功能菜单选项。每次有鼠标响应时间之后就根据当前多文档区域是否有活动的子窗口来设置文档操作、窗口操作、格式操作是否可选;若文档打开且有内容被选中,将字体操作和段落操作设置为可用。同时,每新建一个子窗口就需要将子窗口名添加到菜单项中,以供后面实现通过菜单项切换子窗口的功能。
对于每一个子窗口的菜单项,都需要与信号映射器建立关联,这样就可以实现通过菜单项切换窗口的功能了。
QT自动封装了子窗口一系列处理共能,我们只需要建立槽函数和信号连接,并且在槽函数中调用多文档区域类自身封装的相应的功能函数即可。
4.4 打开文档
实现该功能我们需要用到文件打开窗口QFileDialgo类,调用该类的getOpenFileName静态方法实现文件打开窗口,其中我们设置文件可选择的文件打开的类型为html、htm和所有文件,通过该方法我们可以获得想要打开文件的文件路径和文件名,检查多文档区域,如果发现该文档已经打开,就将其窗口设置为活动窗口,如果没有打开,则新建一个子窗口,将想要打开的文件的文件内容读出,并以html/纯文本的格式写入子窗口中,并且设置剪切和复制功能为可用。当我们的文档成功打开之后,我们可以在状态栏给一个”文档已打开“的状态 提示。
4.5 文档保存
文件保存的功能分为文档保存和文档另存为。同样的,为实现这两个功能我们照样利用到了QFileDialog类,调用该方法的getSaveFileName方法弹出一个供用户可选的文件保存窗口。文档的内容一旦修改,则会在窗口标题上显示”*“标志位,表示文档已经修改,当执行保存的时候,如果文档已经修改,则会弹出一个警告窗口,提示文档已修改,是否保存的提示,最后因为我们的自定义类是继承自QTxtEdit类,所以我们会选择以html形式保存,而执行另存为功能时,如果发现所要保存的文档已经存在,则保存失败。
除此之外,还需要重写自定义类ChildWnd的close Event方法,该方法继承自父类,在该类中需要重新实现功能,即对用户在弹出”文档已修改”窗口中所做的选择分别做出接受和忽略的处理。
4.6 文档操作
文档操作集撤销、重做、剪切、复制、粘贴功能于一体,好在是QT中已经封装好了这些功能的函数,我们只需要检测到当前有活动子窗口,就用活动子窗口调用对应功能的方法即可。
4.7 字体格式
字体格式包含加粗、倾斜、下划线三个功能,特别要注意的是,我们一定要将这三个按钮设置为可选的。可以利用QTextCursor类去获取窗口中光标的位置,当选择了字体格式之后,我们需要将选择的字体格式与字符合并即可。最终再利用槽函数进行分别相应即可。
4.8 字体字号
设置字体和字号要用到QTextCharFormat类,分别利用其封装好的setFontFamily和setFontPointSize去设置标准字体格式即可。想要获取用户选择的字体格式和字体大小直接调用activated响应事件便可获得。
4.9 段落对齐
设置段落对齐格式,在QT的方法中,封装了一个函数名为setAlignment方法和一系列对应的宏,在这些宏中,AlignLeft代表着左对齐,AlignRight代表右对齐,AlignCenter代表居中,AlignJustify代表两端对齐。
4.10 字体颜色
设置字体颜色,直接使用QColorDialog颜色对话框便可获取用户选择的颜色,在对选中的字体进行设计。为了用户使用方便,在将字体设置为对应的颜色之后,我们使用QPixmap填充为改颜色,并将菜单栏选项的颜色ico图标设置为已经填充号的图标即可。
4.11 项目符号
对选中的文档进行编辑项目符号操作的话,首先我们要获取列表的格式,设置列表格式的缩进为一个table键的宽度,之后利用setIndent设置块的缩进为0,从项目符号列表的菜单选项中获取用户选择的项目符号,使用setStyle设置标号的风格,如果没有获取到用户所选的格式,则至格式缩进为无效,并且还要将该格式合并到块格式,这样,项目符号的功能便完成了。
4.12 打印预览
为了使项目支持打印和打印预览的模块,我们需要在项目文件中添加QT += printSupport的语句,同时添加一系列队中的头文件。做好基本准备工作之后,便可以着手去实现这些功能了。打印功能的实现需要我们去分配一个打印机资源,再根据QPrintDialog提示窗口获得用户的需求,用这个去初始化打印机资源即可实现打印功能。而实现打印预览功能就需要借用QT的QPrintPreviewDialog窗口,建立槽函数连接,将打印预览窗口所生成的一组预览页面所发出的pianRequested信号与printPreview连接来预览打印页面。
4.13流程图
在这里插入图片描述
在这里插入图片描述
5 软件测试与分析
软件测试是软件开发中必不可少的阶段。本章中,通过各种测试方法和多个测试用例,对应用进行测试,以期找出系统中可能导致系统出现问题的地方,使得该应用成为一个稳定的,高效的,能够达到用户标准的应用。
5.1测试用例
5.1.1菜单项工具栏
5.2测试环境与测试电脑

在这里插入图片描述

在这里插入图片描述

Windows 版本:10

测试电脑:联想
5.3测试结果
通过对应用的全面测试,字体颜色,字号,工具栏等测试条目都通过,应用能正常工作。
6总结与展望
通过此次课程设计,使我更加扎实的掌握了有关c++方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。不仅培养了独立思考、动手操作的能力,在各种其它能力上也都 有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。

有意源码的留下邮箱。安装好后打开工程文件.pro即可

转载地址:http://bbozi.baihongyu.com/

你可能感兴趣的文章