本来想用C++ 写个UI的东西,想写个记事本,但是开始感觉有点无聊,不过开始了就把他做完吧
初始功能 新建NewFile 保存Save 另存为SaveAs
NewFile就是 新建一个Untitle无标题文件
Save分为两种 1是Save Untitle无标题文件等同于另存为
2是普通的已经存在于外存的文件,只作为修改内容desave
因此需要一个简单bool 标志是否Untitle变量 ,UI就是拖拽
主要函数在下边
不怎么熟练,有些错误提示还没有写好。
void MainWindow::NewFile()
{
if(NeedSave()) //如果我们要新建文档,就要提醒是否保存当前文档,取消返回F
{
CurFile=tr("未命名.txt");
IsUnTitle=true;
setWindowTitle(CurFile);
ui->textEdit->clear();
ui->textEdit->setVisible(true);
}
}
bool MainWindow::OpenFile(const QString &fname)
{ if(NeedSave())
{
QFile file(fname);
file.open(QFile::ReadOnly|QFile::Text);
QTextStream in(&file);
ui->textEdit->setPlainText(in.readAll());
CurFile = QFileInfo(fname).canonicalFilePath();
IsUnTitle=false;
setWindowTitle(CurFile);
return true;
}
}
bool MainWindow::Save()
{
if(IsUnTitle) //如果是需要被创建新文件
{
if(SaveAs()) //如果我们另存为,且存取成功,那么这就是一个相当于open的文件
return IsUnTitle=false;
}
else
{
return SaveFile(CurFile);}/ve保存修改
}
bool MainWindow::SaveAs()
{
QString fileName = QFileDialog::getSaveFileName(this,
tr("另存为"),CurFile); //获取需要保存的文件路径
if (fileName.isEmpty()) return false;
return SaveFile(fileName);
}
bool MainWindow::SaveFile(const QString &fname)
{
QFile file(fname);
file.open(QFile::WriteOnly | QFile::Text); //打开文件
QTextStream out(&file);
out << ui->textEdit->toPlainText(); //写入文件
CurFile = QFileInfo(fname).canonicalFilePath(); //获得文件路径
setWindowTitle(CurFile); //重置标题
file.close();
return true;
}
bool MainWindow::NeedSave() //保存提示
{
if(ui->textEdit->document()->isModified()) //改变了文本内容
{
QMessageBox warnbox;
warnbox.setWindowTitle(tr("warning"));
warnbox.setIcon(QMessageBox::Warning);
warnbox.setText(CurFile+tr("是否需要保存"));
QPushButton *YButton = warnbox.addButton(tr("是(&Y)"),QMessageBox::YesRole);
warnbox.addButton(tr("否(&N)"), QMessageBox::NoRole);
QPushButton *CButton=warnbox.addButton(tr("取消"),QMessageBox::RejectRole);
warnbox.exec();
if(warnbox.clickedButton()==YButton)
{
return Save();
}
else if(warnbox.clickedButton()==CButton)
return false;
}
return true; //文档没有更改返回true
}
void MainWindow::on_action_New_triggered() //转到槽
{
NewFile();
}
void MainWindow::on_action_New_triggered()
{
NewFile();
}
void MainWindow::on_action_Save_triggered()
{
Save();
}
void MainWindow::on_action_SaveAs_triggered()
{
SaveAs();
}
主要的函数
其中界面通过QT UI设计 很方便