六、Qt Creator实现文本编辑

上传人:鲁** 文档编号:439149680 上传时间:2024-01-18 格式:DOCX 页数:15 大小:178.43KB
返回 下载 相关 举报
六、Qt Creator实现文本编辑_第1页
第1页 / 共15页
六、Qt Creator实现文本编辑_第2页
第2页 / 共15页
六、Qt Creator实现文本编辑_第3页
第3页 / 共15页
六、Qt Creator实现文本编辑_第4页
第4页 / 共15页
六、Qt Creator实现文本编辑_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《六、Qt Creator实现文本编辑》由会员分享,可在线阅读,更多相关《六、Qt Creator实现文本编辑(15页珍藏版)》请在金锄头文库上搜索。

1、前面已经将界面做好了,这里我们为其添加代码,实现文本编辑的功能。首先实现新建文件,文件保存,和文件另存为的功能。(我们先将上次的工程文件夹进行备份,然后再对其进行修改。在写较大的程序 时,经常对源文件进行备份,是个很好的习惯。)在开始正式写程序之前,我们先要考虑一下整个流程。因为我们要写记事本一 样的软件,所以最好先打开windows中的记事本,进行一些简单的操作,然后 考虑怎样去实现这些功能。再者,再强大的软件,它的功能也是一个一个加上 去的,不要设想一下子写出所有的功能。我们这里先实现新建文件,保存文件, 和文件另存为三个功能,是因为它们联系很紧,而且这三个功能总的代码量也 不是很大。因为

2、三个功能之间的关系并不复杂,所以我们这里便不再画流程图,而只是简 单描述一下。新建文件,那么如果有正在编辑的文件,是否需要保存呢?如果需要进行保存,那这个文件以前保存过吗?如果没有保存过,就应该先将其 另存为。下面开始按这些关系写程序。1打开Qt Creator,在File菜单中选择Open,然后在工程文件夹中打开 MainWindow.pro 工程文件。先在main.cpp文件中加入以下语句,让程序中可以使用中文。在其中加入#include 头文件包含,再在主函数中加入下面一行:QTextCodec:setCodecForTr(QTextCodec:codecForLocale();这样在程

3、序中使用中文,便能在运行时显示出来了。更改后文件如下图。2.在 mainwindow.h 文件中的 private 下加入以下语句。bool isSaved; /为 true 时标志文件已经保存,为 false 时标志文件尚未保存QString curFile; /保存当前文件的文件名void do_file_New(); /新建文件void do_file_SaveOrNot(); /修改过的文件是否保存void do_file_Save(); /保存文件void do_file_SaveAs(); /文件另存为bool saveFile(const QString& fileName);

4、/存储文件这些是变量和函数的声明。其中isSaved变量起到标志的作用,用它来标志文件 是否被保存过。然后我们再在相应的源文件里进行这些函数的定义。3.在mainwindow.cpp中先加入头文件#include ,然后在构造函数里添 加以下几行代码。isSaved = false; /初始化文件为未保存过状态cur File = tr( “未命名.txt” ); /初始化文件名为“未命名.txt ”setWindowTitle(curFile); /初始化主窗口的标题这是对主窗口进行初始化。效果如下。4. 然后添加“新建”操作的函数定义。void MainWindow:do_file_New

5、() /实现新建文件的功能 do_file_SaveOrNot(); isSaved = false;cur File = tr( “未命名.txt);setWindowTitle(curFile);ui-textEdit-clear(); /清空文本编辑器 ui-textEdit-setVisible(true); /文本编辑器可见 新建文件,先要判断正在编辑的文件是否需要保存。然后将新建的文件标志为未保存过状态。5.再添加 do_file_SaveOrNot 函数的定义。void MainWindow:do_file_SaveOrNot() /弹出是否保存文件对话框if(ui-textEd

6、it-document()-isModified() /如果文件被更改过,弹出保 存对话框QMessageBox box;box.setWindowTitle(tr( “警告”);box.setIcon(QMessageBox:Warning);box.setText(curFile + tr(” 尚未保存,是否保存?” ); box.setStandardButtons(QMessageBox:Yes | QMessageBox:No); if(box.exec()二二QMessageBox:Yes) /如果选择保存文件,则执行保存操作 do_file_Save(); 这个函数实现弹出一个对

7、话框,询问是否保存正在编辑的文件。6.再添加“保存”操作的函数定义。void MainWindow:do_file_Save() /保存文件if(isSaved) /如果文件已经被保存过,直接保存文件saveFile(curFile);elsedo_file_SaveAs(); /如果文件是第一次保存,那么调用另存为对文件进行保存时,先判断其是否已经被保存过,如果没有被保存过,就要先对 其进行另存为操作。7.下面是“另存为”操作的函数定义。void MainWindow:do_file_SaveAs() /文件另存为QString fileName = QFileDialog:getSaveF

8、ileName(this,tr( “另存为” ),curFile);/获得文件名if(!fileName.isEmpty() /如果文件名不为空,则保存文件内容saveFile(fileName);这里弹出一个文件对话框,显示文件另存为的路径另存为保存在 Q): | O debug我盘近的文档桌面我的文档5 main. 0 二MainWindow. exe 2J| mainwindow. 0 IJ moc_mainwinlow. cpp 3| moc_mainwindow. 0 |=J qrc_menu. cpp3| qrc_menu. 0 旨未命名.txt我的电脑网上邻居文件名):保存类型d

9、): |m Files (*.*) 3取消8.下面是实际文件存储操作的函数定义。bool MainWindow:saveFile(const QString& fileName) /保存文件内容,因为可能保存失败,所以具有返回值,来表明是否保存成功QFile file(fileName);if(!file.open(QFile:WriteOnly | QFile:Text)/以只写方式打开文件,如果打开失败则弹出提示框并返回QMessageBox:warning(this, tr( “保存文件”),tr( “无法保存文件 %l:n %2 ).arg(fileName).arg(file.err

10、orString();return false;/%1,%2表示后面的两个arg参数的值QTextStream out(&file); /新建流对象,指向选定的文件 out textEdit-toPlainText(); /将文本编辑器里的内容以纯文本的 形式输出到流对象中isSaved = true;curFile = QFileInfo(fileName).canonicalFilePath(); /获得文件的标准路 径setWindowTitle(curFile); /将窗口名称改为现在窗口的路径 return true;这个函数实现将文本文件进行存储。下面我们对其中的一些代码进行讲解。

11、QFil efile(f il eName); 一句,定义了一个 QFile 类的对象 file,其中 fil ename 表明这个文件就是我们保存的的文件。然后我们就可以用file代替这个文件, 来进行一些操作。Qt中文件的操作和C,C+很相似。对于QFile类对象怎么使 用,我们可以查看帮助。点击Qt Creator最左侧的Help,在其中输入QFile,在搜索到的 列表中选择QFile即可。这时在右侧会显示出QFile类中所有相关信息以及他们 的用法和说明。a.r QFilt CoyyltTsc QFil* kcolwra QFu. Im站b OF ilQFil IsaOlhar QFi

12、l* bOwrQFil* f*t*LErr*r QFil*QFil*Mrr QFd* *gQptM UPJ Cpuitow QFiIalrTr Qfil :liietrre QFiX* loiotrcaErrcr QFil* TOotbTar QFil*QFil| QFil*QFile ClassQFil# clwMtfw x*dw fxw ud vntinInhtritfInherited by QTprlie.Rta: All the fuDCUcw w thit elus iza rewree, netpt4cF,q:Public Types typedef VedexF typedef

13、 Encd“F Lift of allutcludutf inharitad MNtav* Obiolete Beabi; Qt 9 suppoit Mabex,/ 我们往下拉,会发现下面有关于怎么读取文件的示例代码。/A xxo 亠 a 2 2 亠 i 丄亠亠亠 2 x o 亠2、ux,厶2 5 u/jr 亠 av*/.xxx &。i* - 亠youve reached the end of the file, atEnd() returns true.Reading Files DirectlyThe following example reads a text file line by

14、line:QFile file(in. txt*);if (Jfile. open(QIODevice::Readonly | QIODevice::Text) return;while (Jfile. atEndO) QByteArray line = file.readLine(); process_line(line);The QIODevice::Text flag passed to open() tells Qt to convert Wine QFile assumes binary, 1. e. it doesn51 perform any conversion on th/ 再往下便能看到用 QTextStream 类对象,进行字符串输入的例子。下面也提到了 QFileInfo 和 QDir 等相关的类,我们可以点击它们去看一下具体的使用说明。/right:QFile file(out.txt);if (Jfile.open(QIODence::Vrite

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号