导语


前面已经在主窗口中添加了菜单和工具栏,这一篇中我们将实现基本的文本编辑功能。在开始正式写程序之前,我们先要考虑一下整个流程。因为这里要写一个记事本一样的程序,所以最好先打开Windows中的记事本,进行一些简单的操作,然后考虑怎样去实现这些功能。再者,再强大的软件,它的功能也是一个一个加上去的,不要设想一下子写出所有的功能。我们这里先实现新建文件,保存文件,和文件另存为三个功能,是因为它们联系很紧,而且这三个功能总的代码量也不是很大。



目录


一、实现新建文件、文件保存和另存为功能 
二、实现打开、关闭、退出、撤销、复制、剪切、粘贴等功能 


正文



一、实现新建文件、文件保存和另存为功能

1.首先来分析下整个流程,当新建文件时,要考虑是否保存正在编辑的文件,如果需要保存,还要根据该文件以前是否保存过来进行保存或者另存为操作。下面我们根据这里的分析来添加需要的函数和对象。

2.打开上一篇完成的项目,然后先在main.cpp文件中添加代码来保证代码中可以使用中文字符。
首先添加#include <QTextCodec>头文件包含,然后在主函数中添加如下代码:


QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

3.在mainwindow.h文件中添加public函数声明:


void newFile();   // 新建操作
bool maybeSave(); // 判断是否需要保存
bool save();      // 保存操作
bool saveAs();    // 另存为操作

bool saveFile(const QString &fileName); // 保存文件

       这里的几个函数就是用来完成功能逻辑的,下面我们会添加它们的定义来实现相应的功能。因为这几个功能联系紧密,所以这几个函数会相互调用。

4.然后添加private变量定义:


// 为真表示文件没有保存过,为假表示文件已经被保存过了
bool isUntitled;
// 保存当前文件的路径

QString curFile;

       这里的isUntitled是一个标志,用来判断文档是否被保存过。而curFile用来保存当前打开的文件的路径。


5.下面到mainwindow.cpp文件,先添加头文件:

 

本文来源:http://www.qter.org/forum.php?mod=viewthread&tid=110