您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > Qt Creator实现文本编辑
专业:嵌入式专业《Qt》QtCreator实现文本编辑实现功能:前面已经将界面做好了,这里我们为其添加代码,实现文本编辑的功能。首先实现新建文件,文件保存,和文件另存为的功能。新建文件,那么如果有正在编辑的文件,是否需要保存呢?如果需要进行保存,那这个文件以前保存过吗?如果没有保存过,就应该先将其另存为。QtCreator实现文本编辑实现过程:1.打开QtCreator,在File菜单中选择Open,然后在工程文件夹中打开MainWindow.pro工程文件。先在main.cpp文件中加入以下语句,让程序中可以使用中文。在其中加入#includeQTextCodec头文件包含,再在主函数中加入下面一行:QTextCodec::setCodecForTr(QTextCodec::codecForLocale());这样在程序中使用中文,便能在运行时显示出来了。QtCreator实现文本编辑更改后文件如下图。QtCreator实现文本编辑实现过程:2.在mainwindow.h文件中的private下加入以下语句。boolisSaved;//为true时标志文件已经保存,为false时标志文件尚未保存QStringcurFile;//保存当前文件的文件名voiddo_file_New();//新建文件voiddo_file_SaveOrNot();//修改过的文件是否保存QtCreator实现文本编辑实现过程:2.在mainwindow.h文件中的private下加入以下语句(续)。voiddo_file_Save();//保存文件voiddo_file_SaveAs();//文件另存为boolsaveFile(constQString&fileName);//存储文件这些是变量和函数的声明。其中isSaved变量起到标志的作用,用它来标志文件是否被保存过。然后我们再在相应的源文件里进行这些函数的定义。QtCreator实现文本编辑实现过程:3.在mainwindow.cpp中先加入头文件#includeQtGui,然后在构造函数里添加以下几行代码。isSaved=false;//初始化文件为未保存过状态curFile=tr(未命名.txt);//初始化文件名为“未命名.txt”setWindowTitle(curFile);//初始化主窗口的标题这是对主窗口进行初始化。QtCreator实现文本编辑实现过程:效果如下。QtCreator实现文本编辑实现过程:4.然后添加“新建”操作的函数定义。voidMainWindow::do_file_New()//实现新建文件的功能{do_file_SaveOrNot();isSaved=false;curFile=tr(未命名.txt);setWindowTitle(curFile);ui-textEdit-clear();//清空文本编辑器ui-textEdit-setVisible(true);//文本编辑器可见}QtCreator实现文本编辑实现过程:4.新建文件,先要判断正在编辑的文件是否需要保存。然后将新建的文件标志为未保存过状态。QtCreator实现文本编辑实现过程:5.再添加do_file_SaveOrNot函数的定义。voidMainWindow::do_file_SaveOrNot()//弹出是否保存文件对话框{if(ui-textEdit-document()-isModified())//如果文件被更改过,弹出保存对话框{QMessageBoxbox;box.setWindowTitle(tr(警告));QtCreator实现文本编辑实现过程:5.再添加do_file_SaveOrNot函数的定义。box.setIcon(QMessageBox::Warning);box.setText(curFile+tr(尚未保存,是否保存?));box.setStandardButtons(QMessageBox::Yes|QMessageBox::No);if(box.exec()==QMessageBox::Yes)//如果选择保存文件,则执行保存操作do_file_Save();}}QtCreator实现文本编辑实现过程:5.再添加do_file_SaveOrNot函数的定义。这个函数实现弹出一个对话框,询问是否保存正在编辑的文件。QtCreator实现文本编辑实现过程:6.再添加“保存”操作的函数定义。voidMainWindow::do_file_Save()//保存文件{if(isSaved){//如果文件已经被保存过,直接保存文件saveFile(curFile);}else{do_file_SaveAs();//如果文件是第一次保存,那么调用另存为}}QtCreator实现文本编辑实现过程:6.再添加“保存”操作的函数定义。对文件进行保存时,先判断其是否已经被保存过,如果没有被保存过,就要先对其进行另存为操作。QtCreator实现文本编辑实现过程:7.下面是“另存为”操作的函数定义。voidMainWindow::do_file_SaveAs()//文件另存为{QStringfileName=QFileDialog::getSaveFileName(this,tr(另存为),curFile);//获得文件名QtCreator实现文本编辑实现过程:7.下面是“另存为”操作的函数定义。(续)if(!fileName.isEmpty())//如果文件名不为空,则保存文件内容{saveFile(fileName);}}这里弹出一个文件对话框,显示文件另存为的路径。QtCreator实现文本编辑实现过程:7.下面是“另存为”操作的函数定义。QtCreator实现文本编辑实现过程:8.下面是实际文件存储操作的函数定义。boolMainWindow::saveFile(constQString&fileName)//保存文件内容,因为可能保存失败,所以具有返回值,来表明是否保存成功{QFilefile(fileName);QtCreator实现文本编辑实现过程:8.下面是实际文件存储操作的函数定义。(续)if(!file.open(QFile::WriteOnly|QFile::Text))//以只写方式打开文件,如果打开失败则弹出提示框并返回{QMessageBox::warning(this,tr(保存文件),tr(无法保存文件%1:\n%2).arg(fileName).arg(file.errorString()));returnfalse;}//%1,%2表示后面的两个arg参数的值QtCreator实现文本编辑实现过程:8.下面是实际文件存储操作的函数定义。(续)QTextStreamout(&file);//新建流对象,指向选定的文件outui-textEdit-toPlainText();//将文本编辑器里的内容以纯文本的形式输出到流对象中isSaved=true;curFile=QFileInfo(fileName).canonicalFilePath();//获得文件的标准路径setWindowTitle(curFile);//将窗口名称改为现在窗口的路径returntrue;}QtCreator实现文本编辑实现过程:9.双击mainwindow.ui文件,在图形界面窗口下面的ActionEditor动作编辑器里,我们右击“新建”菜单一条,选择Gotoslot,然后选择triggered(),进入其触发事件槽函数。QtCreator实现文本编辑同理,进入其他两个菜单的槽函数,将相应的操作的函数写入槽函数中。如下。voidMainWindow::on_action_New_triggered()//信号和槽的关联{do_file_New();}QtCreator实现文本编辑同理,进入其他两个菜单的槽函数,将相应的操作的函数写入槽函数中。(续)voidMainWindow::on_action_Save_triggered(){do_file_Save();}voidMainWindow::on_action_SaveAs_triggered(){do_file_SaveAs();}QtCreator实现文本编辑实现过程:最终的mainwindow.cpp文件如下。QtCreator实现文本编辑实现过程:最终的mainwindow.cpp文件如下。(续)QtCreator实现文本编辑实现过程:最终的mainwindow.cpp文件如下。(续)QtCreator实现文本编辑实现过程:最终的mainwindow.h文件如下。QtCreator实现文本编辑实现过程:这时点击运行,就能够实现新建文件,保存文件,文件另存为的功能了。QtCreator实现文本编辑实现过程:然后实现打开,关闭,退出,撤销,复制,剪切,粘贴的功能。先备份上次的工程文件,然后再将其打开。1.先在mainwindow.h文件中加入函数的声明。voiddo_file_Open();//打开文件booldo_file_Load(constQString&fileName);//读取文件QtCreator实现文本编辑实现过程:2.再在mainwindow.cpp文件中写函数的功能实现。voidMainWindow::do_file_Open()//打开文件{do_file_SaveOrNot();//是否需要保存现有文件QStringfileName=QFileDialog::getOpenFileName(this);//获得要打开的文件的名字if(!fileName.isEmpty())//如果文件名不为空{do_file_Load(fileName);}ui-textEdit-setVisible(true);//文本编辑器可见}QtCreator实现文本编辑实现过程:QtCreator实现文本编辑实现过程:boolMainWindow::do_file_Load(constQString&fileName)//读取文件{QFilefile(fileName);if(!file.open(QFile::ReadOnly|QFile::Text)){QMessageBox::warning(this,tr(读取文件),tr(无法读取文件%1:\n%2.).arg(fileName).arg(file.errorString()));returnfalse;//如果打开文件失败,弹出对话框,并返回}QtCreator实现文本编辑实现过程:boolMainWindow::do_file_Load(constQString&fileName)//读取文件(续)QTextStreamin(&file);ui-textEdit-setText(in.readAll());//将文件中的所有内容都写到文本编辑器中curFile=QFileInfo(fileName).canonicalFilePath();setWindowTitle(curFile);returntrue;}QtCreator实现文本编辑实现过程:上面的打开文件函数与文件另存为函数相似,读取文件的函数与文件存储函数相似。QtCreator实现文本编辑实现过程:3.然后按顺序加入更菜单的关联函数,如下。voidMainWindow::on_action_Open_triggered()//打开操作{do_file_Open();}QtCreator实现文本编辑实现过程:3.然后按顺序加入更菜单的关联函数,如下。voidMainWindow::on_action_Close_triggered()//关闭操作{do_file_SaveOrNot();ui-textEdit-setVisible(false);}QtCreator实现文本编辑实现过程:3.然后按顺序加入更菜单的
本文标题:Qt Creator实现文本编辑
链接地址:https://www.777doc.com/doc-3259109 .html