Qt5 text_Editor(一)

楚望
2023-12-01

本来想用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设计  很方便



 类似资料: