35_文本编辑器中的数据存取

关键词:QAction的信号、文件打开操作、文件保存操作、文件另存为操作

1. QAction的信号

  • QAction被点击之后会产生一个triggered信号
    通过信号与槽的机制能够捕捉对QAction对象的操作,项目中可以将多个信号映射到同一个槽函数
connect(action, 
        SIGNAL(triggered()),
        this, 
        SLOT(slot_function()))

2. 文件打开操作

void MainWindow::onFileOpen()
{
    QString path = showFileDialog(QFileDialog::AcceptOpen, "Open");

    if( path != "")
    {
        QFile file(path);

        if( file.open(QIODevice::ReadOnly | QIODevice::Text))   //文件打开成功
        {
            mainEditor.setPlainText(QString(file.readAll()));

            file.close();

            m_filePath = path;

            setWindowTitle("NotePad - [" + m_filePath + "]");
        }
        else        // 文件打开失败,弹出对话框提示
        {
            showErrorMessage(QString("Open file error! \n\n") + "\"" + path + "\"");
        }
    }
}

3. 文件保存操作

void MainWindow::onFileSave()
{
    if(m_filePath == "")
    {
        m_filePath = showFileDialog(QFileDialog::AcceptSave, "Save");
    }

    if( m_filePath != "")
    {
        QFile file(m_filePath);

        if( file.open(QIODevice::WriteOnly | QIODevice::Text) )
        {
            QTextStream out(&file);

            out << mainEditor.toPlainText();

            file.close();

            setWindowTitle("NotePad - [" + m_filePath + "]");
        }
        else
        {
            showErrorMessage(QString("Save file error! \n\n") + "\"" + m_filePath + "\"");

            m_filePath = "";
        }
    }
}

4. 文件另存为操作

 void MainWindow::onFileSaveAs()
 {
     QString path = showFileDialog(QFileDialog::AcceptSave, "Save As");

     if (path != "")
     {
         QFile file(path);

         if( file.open(QIODevice::WriteOnly | QIODevice::Text) )
         {
             QTextStream out(&file);

             out << mainEditor.toPlainText();

             file.close();

             m_filePath = path;

             setWindowTitle("NotePad - [" + m_filePath + "]");
         }
         else
         {
             showErrorMessage(QString("Save file error! \n\n") + "\"" + path + "\"");
         }
     }
 }

5. 小结

  • Qt项目中尽量将界面代码功能代码分离开
  • Qt项目开发时尽量复用平台中提供的相关组件
  • Qt项目中的多数情况都是编写相应的槽函数
    槽函数用于相应用户操作
    槽函数是具体功能的触发点

声明:此文章仅是本人在学习狄泰QT实验分析课程所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 韩元旭、余橙、沈开洋 Qt介绍 Qt是一个跨平台的C++图形用户界面应用程序框架。它早在1991年奇趣科技公司两位...
    开洋_shen阅读 16,477评论 4 24
  • Qt 学习之路 2(1):序(Qt 学习之路 2(1):序) Qt 学习之路 2(2):Qt 简介(Qt 学习之路...
    TMAC_EAH阅读 1,345评论 0 8
  • 为什么在头文件中有的是使用前置声明,而有的是包含头文件? 如下代码: 前置声明(forward declarati...
    Joe_HUST阅读 1,477评论 0 6
  • (一) 不知从什么时候开始,水清恋上了那片芦苇丛。 那片芦苇丛的前边是一条高高长...
    小慧Joy阅读 1,249评论 0 2
  • 近来接触人多,看手机多了,脑中信息太多,不知觉中我又没有好心态了。 五一回娘家两趟,一趟是为装修的事,找的老朱,一...
    pennyzhou阅读 169评论 0 0

友情链接更多精彩内容