目录
- 1 概述
- 1.1 专业技能实训目的与要求
- 1.2 项目背景
- 1.2.1 项目知识背景
- 1.2.2 项目设计背景
- 2 需求分析
- 2.1软件需求
- 2.1.1设计需求
- 2.1.2功能需求
- 2.2用户需求
- 2.2.1需求分析报告
- 3 概念结构设计
- 3.1 功能结构
- 3.1.1项目功能结构图
- 3.1.2项目功能结构简介
- 4 项目程序设计
- 4.1总体设计
- 4.1.1界面设计
- 4.1.2关键性代码及简介
- 5 调试
- 5.1文件菜单
- 5.2编辑菜单
- 5.3格式菜单
- 5.4其他功能
- 6 总结
1 概述
1.1 专业技能实训目的与要求
专业技能实训的目的是:本次专业技能实训的主要任务是运用在大学期间专业课程中学到的理论知识来指导实践,了解毕业设计过程及其实现方法,学会用软件工程的方法解决实际问题。掌握软件工程、系统分析、系统设计、数据建模、数据库设计、软件开发等相关知识,掌握软件系统分析设计的具体步骤与基本方法,掌握系统开发工具的基本用法和基本内容,并能运用软件工程的方法与思路,针对初步选定的一个系统做调研分析,熟悉软件系统的开发流程。通过专业技能实训,提高实践动手技能,培养独立分析分析问题和解决问题的能力。
专业技能实训的要求:本次专业技能实训的选题比较灵活,可以是自主选题,也可以自己选择比较感兴趣的题目,重点是完成系统的调研分析与前期准备工作,题目要符合毕业设计的要求,并且具备一定的难度和深度。
1.2 项目背景
计算机以及网络技术的飞速发展,社会正快速向信息化社会前进,我们需要更智能、更专业的软件帮助我们完成工作,从而提高工作效率。
目前文本编辑器种类很多,所提供的功能也很多,但是本身都有一定细节上的缺陷,而且所占资源过大。本次设计在计算机操作系统下,以QT作为开发工具的面向对象,用C++编写一款可以实现基本的创建、保存等文本操作;剪切、复制、粘贴等编辑操作;字体颜色、大小设置的格式操作以及图片插入、表格创建等富文本操作。
1.2.1 项目知识背景
1.QT的简要介绍
Qt5主要聚焦于以下内容:
(1)出色的图形:Qt Quick2基于OpenGL(ES)来构建场景视图。重写的图形堆栈提供的图形效果与易用性在这一领域达到了从未有过的一个新高度。
(2)开发者生产力:QML和JavaScript是用于创建用户界面的主要手段。后端由C++驱动。JavaScript和C++之间的分割为前端开发人员集中精力创造漂亮的图形界面,后端的C++开发人员集中精力在稳定性、性能、延长运行时间提供了一个快速迭代。
(3)跨平台移植:随着综合的Qt平台抽象,它现在可以更容易、更快地移植到一个更广泛的平台。Qt5围绕着Qt必备模块和附加组件,它允许操作系统开发人员专注于要领模块,并引出一个较小的运行时概念。
(4)开放式开发:Qt目前在Qt-Project中真正开放。发展是开放的、社区性的。
2.QT的工作原理
与HTML类似,QML是一种标记性语言。元素被标记在QtQuick的花括号Item{}中。它为创建用户界面、开发人员高效性、易于阅读性而设计。用户界面可以使用JavaScript代码来增强。QtQuick能够很容易使用Qt C++来扩展自己的本地功能。简而言之UI被称为前端,本地部分称为后端。这可以让你从用户接口部分分割应用程序的密集计算和本地操作。
在一个典型的项目里,前端开发使用QML/JavaScript,后端代码、系统接口则使用QtC++开发。这让界面开发人员和功能开发人员之间的有一个自然的分割。通常情况下,后台使用Qt自己的单元测试框架进行测试,导出给前端开发人员使用。
3.主要知识介绍
一、项目建立
(1)建立C项目:非QT项目-》纯C语言项目。
(2)建立C++项目:非QT项目-》纯C++语言项目。
(3)建立GUI项目:应用程序-》Qt Widgets Application-》基类先选择QWidget,创建界面选项去掉,类名需要根据窗口功能来修改,首字母大写。
注意:1.固定自己的工作目录。2.注意项目路径选择不能包含中文。
二、界面编程
(1)建立第一个窗口程序
应用程序-》Qt Widgets Application-》基类先选择QWidget,创建界面选项去掉。类名需要根据窗口功能来修改,首字母大写。
(2)使用类方法改变对象属性
尝试改变窗口大小属性方法:1.搜索相应的方法。2.搜帮助文档,首先定位到文档中相应的属性:Properties,再去查找相应的方法。
(3)窗口增加按钮,设置按钮显示文字为"点击",并改变按钮字体颜色。
QPushButton::QPushButton(QWidget * parent = 0)
//凡是在构造方法中看到parent,代表是把自己放到parent上。
void setText(const QString & text)
//设置按钮显示文本。
void setStyleSheet(const QString & styleSheet)
//这个属于QWidget类,是通用方法,用于所有部件设置样式。颜色查找:Qt::GlobalColor
三、使用UI设计器
UI编辑器会在项目构建目录中自动生成一个ui_xxx.h,来表示ui编辑器界面的代码,属于自动生成的,不要修改。修改只能通过ui编辑器来做。
四、QT打印调试方法
(1)类C语言使用方法
int val = 5;
qDebug(“val = %d”, a); //方法1,类似于C的printf函数。
(2)类C++使用方法
int val = 5;
qDebug()<<"val = "<<val; //方法2,类似于C++的cout函数。
五、信号与槽
(1)简介
信号与槽是QT在C++基础上新增特性,类似与windows编程中的事件回调机制。
(2)使用条件
1.通信的对象必须是从 QObject 派生出来的。
2.类定义开始要加入 Q_OBJECT 宏。
要点:
1.函数是静态的,可以不用实例化即可调用。
2.信号和槽可以从帮助文档查找,也可以自己定义。
3.槽方法本身就是一个普通的方法,是可以被直接调用。
4.信号也是一个方法,但是信号不能被直接调用,只能被发送。
5.如果槽函数带形参,是不可以直接传入,只能通过信号传递。
(3)使用步骤
- 帮助文档输入"connect",进入函数帮助文档。
2.复制文档中demo代码。
3.粘贴后根据需求做修改。
4.实例:点击按钮,关闭窗口。
(4)自定义槽函数
关键字:public(private/protected) slots:
(5)自定义信号
关键字:signals:定义信号。 emit:发送信号。信号只需要定义,不需要实现。
(6)信号与槽关联关系
QObject::connect( sender, SIGNAL(signal),receiver, SLOT(method) );
//信号与信号相连
QObject::connect( sender, SIGNAL(signal), receiver, SIGNAL(signal) );
//同一个信号连接到多个槽
QObject::connect( sender, SIGNAL(signal),receiver, SLOT(method1) );
QObject::connect( sender, SIGNAL(signal),receiver, SLOT(method2) );
…
//多个信号连接到同一个槽
QObject::connect( sender, SIGNAL(signal1),receiver, SLOT(method) );