您的位置:首页 > 移动开发

Qt Quick Widgets App中简单功能的实现(新建,保存,另存为等)

2014-08-07 18:23 573 查看

Qt Quick Widgets App中简单功能的实现(新建,保存,另存为等)

———————————————————————————————————————————————————————————————————————

在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); //存储文件

_________________________________________________________________________________________________________________________________

在mainwindow.cpp中先加入头文件#include <QtGui>,然后在构造函数里添加以下几行代码。

5.2版本Qt中 头文件如下



isSaved = false; //初始化文件为未保存过状态



curFile = tr(“未命名.txt”); //初始化文件名为“未命名.txt”



setWindowTitle(curFile); //初始化主窗口的标题

_________________________________________________________________________________________________________________________________

在功能中的cpp中 加入下面代码实现功能,widget替换成当前命名文件的名称

#include "widget.h"
#include "ui_widget.h"
#include <QtGui>
#include <QMessageBox>
#include <QFileDialog>
widget::widget(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::widget)
{
ui->setupUi(this);
isSaved = false; //初始化文件为未保存过状态
curFile = tr("未命名.txt"); //初始化文件名为“未命名.txt”
setWindowTitle(curFile); //初始化主窗口的标题
}

void widget::do_file_New() //实现新建文件的功能
{
do_file_SaveOrNot();
isSaved = false;
curFile = tr("未命名.txt");
setWindowTitle(curFile);
ui->textEdit->clear(); //清空文本编辑器
ui->textEdit->setVisible(true); //文本编辑器可见
}

void widget::do_file_SaveOrNot() //弹出是否保存文件对话框
{
if(ui->textEdit->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();
}
}

void widget::do_file_Save() //保存文件
{
if(isSaved){ //如果文件已经被保存过,直接保存文件
saveFile(curFile);
}
else{
do_file_SaveAs(); //如果文件是第一次保存,那么调用另存为
}
}

void widget::do_file_SaveAs() //文件另存为
{
QString fileName = QFileDialog::getSaveFileName(this,tr("另存为"),curFile);
//获得文件名
if(!fileName.isEmpty()) //如果文件名不为空,则保存文件内容
{
saveFile(fileName);
}
}

bool widget::saveFile(const QString& fileName)
//保存文件内容,因为可能保存失败,所以具有返回值,来表明是否保存成功
{
QFile file(fileName);
if(!file.open(QFile::WriteOnly | QFile::Text))
//以只写方式打开文件,如果打开失败则弹出提示框并返回
{
QMessageBox::warning(this,tr("保存文件"),tr("无法保存文件 %1:\n %2").arg(fileName).arg(file.errorString()));
return false;
}
//%1,%2表示后面的两个arg参数的值
QTextStream out(&file);   //新建流对象,指向选定的文件
out << ui->textEdit->toPlainText();   //将文本编辑器里的内容以纯文本的形式输出到流对象中
isSaved = true;
curFile = QFileInfo(fileName).canonicalFilePath(); //获得文件的标准路径
setWindowTitle(curFile); //将窗口名称改为现在窗口的路径
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: