A+记事本
来源:互联网 发布:2016诛仙数据互通查询 编辑:程序博客网 时间:2024/05/25 05:38
A+记事本
项目名称:A+记事本(应用程序版)
开发环境:Qt4 C++
项目简介:使用Qt软件编写应用界面,实现菜单界面、新建、打开、保存、修改、撤销、剪切、复制、查找文本的功能,
图1:主界面
图2:菜单栏
图3:菜单栏
部分代码及解释:
void MainWindow::do_file_New()//新建函数
{
if(do_file_SaveOrNot()==-1)//新建前判断原文件是否要保存
return;//当在do_file_SaveOrNot()函数中选择cancel时取消操作
isSaved = false;
curFile = tr("未命名.txt");
setWindowTitle(curFile);
ui->textEdit->clear();//将文本清空
ui->textEdit->setVisible(true);//使textEdite可见,即文本可编译
second_statuslabel->setText(tr("新建文件成功"));
}
int MainWindow::do_file_SaveOrNot()//是否保存函数
{
if(ui->textEdit->document()->isModified())//判断文本是否被更改
{
QMessageBox box;//QMessageBox 为一种模式对话框(短消息,图标,按钮)
box.setWindowTitle(tr("警告"));//给对话框设定标题
box.setIcon(QMessageBox::Warning);//设定对话框图标,QMessageBox的几种信息Warning,Information,Critical,Question
box.setText(curFile + tr("尚未保存,是否保存?") );//设置对话框内容(此处curFile为绝对路径,也是内容部分)
box.setStandardButtons(QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);//增加标准按钮(也可使用addButton)
int flag=box.exec();//对话框被点击后退出状态
if(flag==QMessageBox::Yes)
do_file_Save();
if(flag== QMessageBox::Cancel)
{
// box.close();//可以不加,因为点击后box即退出
return -1;//用于其它函数的状态识别
}
ui->textEdit->document()->setModified(false);//点击Yes/No及产生对应操作后,设定文本不识别修改
}
else
{
isSaved=true;
}
}
void MainWindow::do_file_Save()//保存函数
{
if(!isSaved)//对于新建文件的isSaved=false识别
{
do_file_SaveAs();
}
else
{
saveFile(curFile);
}
}
void MainWindow::do_file_SaveAs()//另存为函数
{
QString fileName=QFileDialog::getSaveFileName(this,tr("另存为"),curFile);
//QFileDialog类为允许用户选择文件或目录的对话框
//返回的是文件名不是绝对路径
//依据this打开路径,窗口名为"另存为",默认文件名根据curFile设定
if(!fileName.isEmpty())//当保存名为空时,将停留在对话窗口
{
saveFile(fileName);
}
}
bool MainWindow::saveFile(const QString& fileName)//保存文件函数
{
QFile file(fileName);//QFile类提供文件的输入/输出设备,给fileName创建一个新的文件对象
if(!file.open(QFile::WriteOnly | QFile::Text))//以参数形式打开文件
{
QMessageBox::warning(this,tr("保存文件"),tr("无法保存文件%1:\n%2").arg(fileName).arg(file.errorString()));
//无法打开文件的报错对话框,对话框标题为"保存文件",内容为"无法保存文件(文件名)",换行显示出报错原因
return false;
}
QTextStream out(&file);//QTextStream类给file提供读写文本的功能,新建流out指向file
out << ui->textEdit->toPlainText();//将文本编译器内容输出至out中
isSaved = true;
curFile = QFileInfo(fileName).canonicalFilePath();//返回文件的绝对路径(包括文件名)
//QFileInfo类提供系统的文件信息
setWindowTitle(curFile);//设置总窗口的标题
ui->textEdit->document()->setModified(false);//将文件保存后不识别文件修改
second_statuslabel->setText(tr("保存文件成功"));
return true;
}
void MainWindow::do_file_Open()//打开文件函数
{
if(do_file_SaveOrNot()==-1)//打开前判断原文件是否需要保存
return;
isSaved = true;
QString fileName=QFileDialog::getOpenFileName(this);//由this决定路径,打开一个选择窗口
if(!fileName.isEmpty())
{
do_file_Load(fileName);//载入文件函数
}
ui->textEdit->setVisible(true);//文本编译框设定为可视
}
bool MainWindow::do_file_Load(const QString &fileName)//载入文件函数
{
QFile file(fileName);
if(!file.open(QFile::ReadOnly | QFile::Text))
{
QMessageBox::warning(this,tr("读取文件"),tr("无法读取文件%1:\n%2").arg(fileName).arg(file.errorString()));
return false;
}
QTextStream in(&file);
ui->textEdit->setText(in.readAll());//setText()函数为设定文本内容,readAll()函数为读取全部内容
curFile = QFileInfo(fileName).canonicalFilePath();
setWindowTitle(curFile);
second_statuslabel->setText(tr("打开文件成功"));
return true;
}
至于QT资源文件.qrc的使用在网上随意都能找到教程
代码在我的资源里:
http://download.csdn.net/detail/ling_yi_/6297937
- A+记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- Java 正则表达式详解
- Go语言网络资源
- oracle左连接与右连接
- requires that an attribute name is preceded by whitespace异常总结
- mac OS下在控制台中发送外部邮件
- A+记事本
- hdu 4750 (最小生成树)
- hdu 4502 吉哥系列故事——临时工计划
- Sierpinski Gasket分形图的绘制
- 给定长度为n的整数数列:a0,a1,..,an-1,以及整数S。这个数列会有连续的子序列的整数总和大于S的,求这些数列中,最小的长度。
- hdu 1202
- leetcode:Maximum Depth of Binary Tree(计算二叉树深度) 【面试算法】
- HADOOP的学习笔记 (第一期) .
- 9月21号出现的问题