基于Qt的linux文本编辑器的设计与实现论文Word文档下载推荐.docx
《基于Qt的linux文本编辑器的设计与实现论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于Qt的linux文本编辑器的设计与实现论文Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
内容提要在当今计算机技术和网络技术的迅猛发展~使我们的社会正快速向信息化社会转变。
如今更加智能~更加专业的软件已经进入我们的生活中~帮助我们更加快捷、方便的完成工作。
目前文本编辑器的种类有很多~所提供的功能也很强大~几乎可以满足我们的任何需求~但在linux系统下~由于使用的人很少~大家对它的文本编辑器的功能和操作都很陌生~也很难适应它的操作方法。
本设计所完成的文本编辑器是针对学习C语言、C++语言及初始接触linux系统的使用者~我们利用Qt软件~使用C++语言编写代码~基于GUI更好的人机交互界面以方便使用者更好的了解和使用文本编辑器。
本文本编辑器的开发主要包括界面窗口的菜单栏、工具栏和状态栏。
使用vi编译器或Qt/GUI编译和运行。
使用挪威TrollTech公司的Qt作为开发技术~利用其提供的各种类与接口~建立系统应用原型。
本文本编辑器的开发采用Qt和c++为开发工具~操作系统为linux、window7、windowXP等。
关键字Qt文本编辑器编译linuxc++
I
山西大学商务学院本科毕业论文(设计)
1.引言
[1]文本编辑器是用作编写普通文字的“应用软件”,在我们的日常生活和工作中比较常用的一款软件。
常见的有linux下的vi、emacs、gedit、window下的笔记本等。
[2]本设计中使用Qt来设计文本编辑器。
“Qt是一个跨平台的C++图形用户界面库”,它具有良好的封装机制使得Qt的模块化程度非常高,可重用性较好,对于开发人员来说非常的方便。
此外它还有良好的人机交互界面,可以带给使用者不一般的体验。
本文设计的文本编辑器主要的功能有打开、新建、保存、复制、粘贴、剪贴、查找和替换、文
字排版、撤销和恢复等。
2.问题的提出和可行性研究
2.1问题的提出方案
随着计算机科学技术的发展,计算机已经非常广泛的被使用到各个领域。
其中文本编辑器成为了每台计算机必不可少的应用软件,也成了大家在工作中必不可少的工具,但是不同的用户会根据不同的工作对文本编辑器有不同的功能要求。
我们最常见到的文本编辑器是office中的word,还有WPS,vi等大众常用的软件。
它们各有优缺点,我们可以各取所需。
但是这些软件并非能满足所
[3]有人的需求,这就需要一些更适合于特定人群和“专业功能的文本编辑器”,可以更方便、简
单的、快速的让用户进行工作和开发。
本设计所针对的用户是C++初学者。
由于它开放的源码特性,可以使C++初学者更好的理解文本编辑器的原理和工作方式,是一款集源码编辑,可以编译、运行的文本编辑器。
此外,对于刚接触linux操作系统的人来说,也是熟悉和了解linux系统和能在系统上快速操作的有效工具。
根据此文本编辑器的特定用户需求,本软件实现的主要功能为:
1、在编辑器运行时,可以直接编辑新建文件File,并且显示当前正在编译的文件名。
2、在编辑器运行时,可以打开*.txt文件,并且能够进行编辑操作。
3、在窗口的顶部要有菜单栏,并包含文件、编辑、格式、查看、窗口、帮助等菜单项;
4、在菜单栏下面有工具栏,在文件菜单下有打开,新建,保存,另存为,打印,退出等按钮;
在编辑菜单下有剪贴、复制、粘贴、撤销、重复、查找、替换等;
在格式菜单下有自动换行、
[9]字体设置;
在查看菜单下有工具栏和状态栏;
在“窗口菜单下有平铺和层叠”;
在帮助菜
1
单下有关于和关于Qt。
5、能够新建,打开和保存文件;
6、能够实现查找功能,在当前文件中查找字符串,在弹出的对话框中输入所要查找的内容,
点击确定,找到后会高亮显示。
7、能够在Qt和vi环境下进行编译和运行。
2.2可行性研究
2.2.1对现在文本编辑器的现状进行分析
在我们的工作生活中使用和市场上出现的文本编辑器种类很多,功能也是各式各样,而且多数都非常优秀,很受大众的喜爱。
但是对于初学C++想了解文本编辑器的原理的人来说,就有点不合实际了,同时对于刚使用linux的用户来说使用其他的文本编辑器很难快速的掌握其使用的方法。
所以对于这种集源码编译,运行于一体的文本编辑器,由于其操作明了,原理简单还是大家非常需要的。
2.2.2关于本设计的文本编辑器的可行性研究分析
根据本文本编辑器的使用对象和范围,和使用者要求的不同,可以从以下几方面实现。
1、提高工作效率降低操作难度;
2、提供开放的源码,并且能够在Qt或vi中直接运行,使用者可以方便的浏览编辑文本编辑器源代码;
对于以上目标的能否实现,我们可以从以下几方面分析:
(1)技术可行性
[4]C++语言是一种非常优秀的“面向对象程序设计语言”,它是在C语言的基础上发展而来的。
面向对象的设计思想是在原来结构化程序设计方法的基础上有了一个质的飞跃,它体现了面向对象
[5]的各种特性。
“C++使用对象、类、继承、封装和消息等基本的概念来进行程序设计”。
从现实中的客观存在的事物出发,构建软件系统,而且在构建中运用人的自然思维方式。
软件的开发是基于某种现实需要,这些需要就是我们所要构建的业务范围,即该软件的问题域。
许多程序的开发都用到它,如计算机体系结构和人工智能等。
C++以其独特的语言机制已经应用到计算机领域的各个方面。
[6]这些技术已经非常的成熟,运用Qt中的“QMainWindow类”和其他的相关部件,即可完全实现所要求的全部功能。
由此可见,其技术在开发上是可行的。
(2)经济可行性
2
对经济可行性的研究是对设计投入使用后带来的经济效益进行估计。
在本设计中不需要太大的资金和人力投入,关键是思想构架,设计好之后可以在网上供使用者下载。
这样也可以达到投入与产出均衡化,达到收支的平横。
(3)运行可行性
系统设计好之后运行于linux系统中,虽然在linux系统中,但它仍具有window的风格,明了和简易操作的特性。
仅要求在linux中安装Qt或vi即可。
此文本编辑器具有良好的“人机交互界
[7]面”用户可以方便的使用。
总之,系统具有较好的运行可行性。
综上所述,开发一个C++文本编辑器是可行的。
3.用户需求分析
3.1用户调查研究
[8]经过多次详细的调研,并且与初次学习C++的潜在用户和“linux入门使用者”进行研讨后发现,本文本编辑器加深了他们对C++文本编辑器的了解和认识,熟悉了C++源代码编辑、编译和运行并很快的掌握了文本编辑器的使用方法。
3.2目标编辑器要实现的功能
通过对用户详细的了解和调查,可以确定此文本编辑器要实现的功能。
1、文件的新建功能;
2、文件的打开功能;
3、文件的保存功能;
4、文件的打印功能;
5、文档的编辑功能,如复制、粘贴等;
、字符串的查找功能;
6
4.系统的设计与实现
4.1系统相关的类的设计
在系统中主要用到了如下的类来实现文本编辑器的各种功能。
classMdiChild;
classQLabel;
3
classQComboBox;
classQActionGroup;
classQSignalMapper;
classFind_Replace;
classTextEdit;
它们的主要作用为:
ClassMdiChild继承于QTextEdit主要实现文本的一些功能如打开、保存、新建等。
classMdiChild:
publicQTextEdit
{
Q_OBJECT
public:
MdiChild();
QStringcurFile;
voidnewFile();
//新建
boolloadFile(constQString&
fileName);
boolsave();
//保存
boolsaveAs();
//另存为„
boolsaveFile(constQString&
QStringcurrentFile(){returncurFile;
}private:
boolisUntitled;
boolmaybeSave();
voidsetCurrentFile(constQString&
//自定义的右键菜单项目
QAction*actRedo;
//撤销
QAction*actUndo;
//恢复
4
QAction*actCut;
//剪贴
QAction*actCopy;
//复制
QAction*actPaste;
//粘贴
QAction*actDel;
//删除
QAction*actSelectAll;
QAction*actFontChang;
//字体改变
QAction*actFontColor;
//颜色改变
publicslots:
voiddocumentWasModified();
protected:
voidcontextMenuEvent(QContextMenuEvent*event);
voidcloseEvent(QCloseEvent*);
voidwheelEvent(QWheelEvent*e);
//voiddragEnterEvent(QDragEnterEvent*e);
//voiddropEvent(QDropEvent*e);
signals:
voidfontChang();
//字体设置信号
voidfontColor();
//字体颜色信号
voidDel();
//删除信号
};
classQLabel主要实现文本编辑器的时间显示和文本中字数的统计。
classQSignalMapper主要实现信号的翻译和转发功能。
classFind_Replace主要实现字符串的查找和替换功能,代码如下:
classFind_Replace:
publicQDialog{
Find_Replace(QWidget*parent=0);
5
~Find_Replace();
Ui:
:
Find_Replace*ui;
protected:
voidchangeEvent(QEvent*e);
privateslots:
voidbutton_Enabed();
classTextEdit主要功能为将各种窗口的部件和类实现的功能全部整合到一起,实现文本编辑
器所要实现的功能。
classTextEdit:
publicQMainWindow{
TextEdit(QWidget*parent=0);
~TextEdit();
voiddragEnterEvent(QDragEnterEvent*e);
voiddropEvent(QDropEvent*e);
private:
TextEdit*ui;
Find_Replace*findReplace;
MdiChild*activeMdiChild();
voidinit_statusBar();
//初始化状态栏
QLabel*first_statusLabel;
//声明3个标签对象,用于显示状态信息
QLabel*second_statusLabel;
6
QLabel*third_statusLabel;
//用于显示时间
QToolBar*toolBar;
QAction*left;
//对齐方式
QAction*center;
QAction*right;
QAction*justify;
QActionGroup*actGrp;
QLabel*listAlign;
//排序标签
QComboBox*listBox;
//排序下拉框
QAction*tabbedView;
//视图模式
QAction*windowView;
QActionGroup*actViewMode;
QSignalMapper*windowMapper;
//信号翻译转发器
voidiniConnect();
enum{MaxRecentFiles=9};
QAction*recentFileActs[MaxRecentFiles];
voidupdateRecentFiles();
//更新最近打开文件列表
voidreadSettings();
//读取保存窗口大小和位置的设置
voidwriteSettings();
//记录窗口的大小和位置
boolsenceF;
//是否区分大小写,1区分0不区分
boolupFindF;
//向前还是向后查找,1向前0向后
7
voiddoFind(QStringfindText);
//查找的实现函数
booldoReplaceAllFind(QStringfindText);
//全部替换的查找实现函数
privateslots:
voidon_action_zoomOut_triggered();
voidon_action_zoomIn_triggered();
voidon_action_Replace_triggered();
voidon_action_Find_triggered();
voidon_action_AboutQt_triggered();
voidon_action_About_triggered();
voidon_action_AllClose_triggered();
voidon_action_Close_triggered();
voidon_action_PreviousW_triggered();
voidon_action_NextW_triggered();
voidon_action_Cascade_triggered();
voidon_action_Tile_triggered();
voidon_action_FontColor_triggered();
voidon_action_Font_triggered();
voidon_action_HighLightShow_triggered(boolchecked);
voidon_action_StatusBarShow_triggered(boolchecked);
voidon_action_ToobarShow_triggered(boolchecked);
voidon_action_Switch_triggered(boolchecked);
voidon_action_Clear_triggered();
voidon_action_AllSelect_triggered();
voidon_action_Del_triggered();
voidon_action_Paste_triggered();
voidon_action_Copy_triggered();
voidon_action_Cut_triggered();
voidon_action_Redo_triggered();
8
voidon_action_Undo_triggered();
voidon_action_PDF_triggered();
voidon_action_PrintPreview_triggered();
voidon_action_Print_triggered();
voidon_action_Quit_triggered();
voidon_action_Asave_triggered();
voidon_action_Save_triggered();
voidon_action_Open_triggered();
voidon_action_New_triggered();
voidupdateMenus();
//更新
voidtimerUpDate();
//定时器
voiddo_cursorChanged();
//获取光标位置信息
voidprintPreview(QPrinter*printer);
voidhighlightCurrentLine();
//高亮显示当前编辑的行
//文档正在被修改
voidslotAlignment(QAction*);
//更改对齐方式
voidslotList(int);
//排序
voidslotViewMode(QAction*);
//视图模式
voidsetActiveSubWindow(QWidget*window);
//激活窗口
voidupdateMenu_SelectW();
//更新“选择窗口”菜单
voidopenRecentFile();
//打开最近文件列表指定文件
voidfindNextF();
//“查找”的“查找下一个”
voidfindNextR();
//“替换”的“查找下一个”
voidreplace();
//替换
voidreplaceAll();
//全部替换
9
4.2开发