Qt5 text_Editor(一)

来源:互联网 发布:seo和网络推广的区别 编辑:程序博客网 时间:2024/05/16 07:34

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