linux系统编程第12章.ppt
第第 12 章章综合设计综合设计本章重点 q记事本的实现qFTP客户端程序的实现212.1 记事本程序设计记事本程序设计q本设计的主要功能是程序在开始时有欢迎界面,进入主程序之后,在文字编辑区域可以进行文字的输入,并且能做改变字体样式和大小,加粗、斜体、下划线等相应的编辑工作,也可以进行剪切,粘贴,拷贝,对齐等操作。文本可以保存,再打开编辑。312.1 记事本程序设计记事本程序设计q本设计主要分菜单模块,工具模块和文本编辑模块,其各个模块的功能:412.1 记事本程序设计记事本程序设计操作步骤:操作步骤:q步骤步骤1.创建工程。q步骤步骤2.创建主窗体。q步骤步骤3.创建actions:在Action Editor编辑器的Property Editor/Signal Handlers选项卡中设置相关的属性。q粗体,斜体和下划线的属性设置 512.1 记事本程序设计记事本程序设计q文本对齐方式action在action编辑器中新建action group。q在Property Editor/Signal Handlers选项卡中设置相关的属性。q左对齐,右对齐和居中对齐的属性设置。612.1 记事本程序设计记事本程序设计q步骤步骤4.自定义工具条。q步骤步骤5.自定义菜单。q步骤步骤6.添加文本编辑区域TextEdit。q步骤步骤7.连接信号和槽。712.1 记事本程序设计记事本程序设计q步骤步骤8.创建ui文件。q步骤步骤9.记事本功能代码部分。q添加类成员变量和头文件 812.1 记事本程序设计记事本程序设计q记事本的初始化,新建,保存,文本对齐等功能代码在wordpad.ui.h中编写。q新建菜单:新建菜单:void wordpad:fileNew()if(saveAndContinue(New)textEdit1-clear();/清空文本编辑区912.1 记事本程序设计记事本程序设计q打开菜单:以只读的方式打开文件流,使用打开菜单:以只读的方式打开文件流,使用textEdit的的setText()方法把文件读进来。()方法把文件读进来。void wordpad:fileOpen()if(saveAndContinue(Open)/调用打开文件对话框调用打开文件对话框 QString fn(QFileDialog:getOpenFileName(QString:null,Rich Text Files(*.txt*),this);/读入文件读入文件if(!fn.isEmpty()fileName=fn;QFile file(fileName);if(file.open(IO_ReadOnly)QTextStream ts(&file);textEdit1-setText(ts.read();1012.1 记事本程序设计记事本程序设计q保存菜单:保存菜单:void wordpad:fileSave()if(fileName.isEmpty()fileSaveAs();else QFile f(fileName);if(f.open(IO_WriteOnly)QTextStream ts(&f);ts text();/把文件输入到QTextStream ts textEdit1-setModified(FALSE);1112.1 记事本程序设计记事本程序设计q另存为菜单另存为菜单:q调用保存对话框,保存对话框是通用对话框,如果名称栏里填的名称使用getSaveFileName()方法获得的需要保存文件的名称,然后调用filesave():void wordpad:fileSaveAs()QString fn=QFileDialog:getSaveFileName(,Rich Text Files(*.txt*),this);if(!fn.isEmpty()fileName=fn;fileSave();1212.1 记事本程序设计记事本程序设计q保存并且继续:保存并且继续:int wordpad:saveAndContinue(const QString&action)int continueAction=1;if(textEdit1-isModified()/提示信息消息框 switch(QMessageBox:information(this,wordpad,trUtf8(当前文件已经被修改n 是否需要保存当前文档?),trUtf8(保存(&Save),trUtf8(不保存(&Dont Save),trUtf8(取消(&Cancel)+action,0,/Enter=button 0 2)/Escape=button 2q保存并且继续:保存并且继续:case 0:/保存,继续 fileSave();break;case 1:/不保存,继续工作 break;case 2:/取消操作 continueAction=0;break;return continueAction;1312.1 记事本程序设计记事本程序设计q改变对齐方式:改变对齐方式:void wordpad:changeAlignment(QAction*align)if(align=leftAction)textEdit1-setAlignment(Qt:AlignLeft);/左对齐 else if(align=rightAction)textEdit1-setAlignment(Qt:AlignRight);/右对齐 else if(align=centerAction)textEdit1-setAlignment(Qt:AlignCenter);/居中1412.1 记事本程序设计记事本程序设计q导入并使用字体库:导入并使用字体库:void wordpad:init()textEdit1-setFocus();QFontDatabase fonts;/字体库对象字体库对象fontComboBox-insertStringList(fonts.families();/把字体库把字体库插入到插入到ComboBox中中QString font=textEdit1-family();/设置字体样式的对象设置字体样式的对象fontfont=font.lower();/默认字体为小写格式默认字体为小写格式/利用一个循环,把字体格式设置为当前所选择的字体项目。利用一个循环,把字体格式设置为当前所选择的字体项目。for(int i=0;i count();i+)if(font=fontComboBox-text(i)fontComboBox-setCurrentItem(i);break;1512.1 记事本程序设计记事本程序设计q步骤步骤10.创建main.cppq步骤步骤11.启动画布的设计对main.cpp的修改:#include#include/添加头文件#include#include#include wordpad.hint main(int argc,char*argv)QApplication app(argc,argv);/新建画布对象QSplashScreen*splash=new QSplashScreen(QPixmap:fromMimeSource(brain.jpg);splash-show();/显示画布/在画布上显示一条语句“正在创建主窗体.”splash-message(QObject:trUtf8(正在创建主窗体.),Qt:AlignRight|Qt:AlignTop,Qt:white);sleep(5);/画布停留5秒钟 wordpad w;app.setMainWidget(&w);w.show();/主窗体显示 splash-finish(&w);/关闭画布 return a.exec();1612.1 记事本程序设计记事本程序设计q步骤步骤12.编译运行程序rootlocalhost#cd /root/qtProject/wordpadrootlocalhost wordpad#qmake projectrootlocalhost wordpad#qmakerootlocalhost wordpad#makeq步骤步骤13.记事本程序测试1712.2 编写编写FTP客户端客户端本设计功能:q通过对应用代码来编写Qt图形界面,逐步形成一个集地址簿和端口扫描功能的Ftp客户端程序。1.通过代码实现主窗口界面、本地文件系统及远端文件系统的显示;在主窗口中创建可以实现连接、上传下载、新建目录、移除文件或目录等元素;2.通过调用地址簿功能,用户可以自行添加、修改和查找Ftp服务站点信息记录;3.利用本地端口扫描功能,对本机现有开放端口进行全面的扫描,并列举。1812.2 编写编写FTP客户端客户端q本例整体框架、各功能模块:1912.2 编写编写FTP客户端客户端q操作步骤操作步骤:q步骤步骤 1:设计地址簿模块。q依次编辑依次编辑mainwindow.h、mainwindow.cpp、centralwidget.h、centralwidget.cpp、main.cpp五个源文件。五个源文件。2012.2 编写编写FTP客户端客户端q步骤步骤 2:设计本机端口扫描模块。q依次编辑依次编辑opt.h、opt.cpp、portscan.h、portscan.cpp、myvar.h、optdlg.ui、scandlg.ui和和main.cpp等八个源文件及两个等八个源文件及两个.pro工程文件。工程文件。2112.2 编写编写FTP客户端客户端q步骤步骤 3:设计ftp客户端模块。q依次编辑依次编辑ftpmainwindow.h、ftpmainwindow.cpp、ftpview.h、ftpview.cpp、main.cpp五个源文件五个源文件。22