35_文本編輯器中的數(shù)據(jù)存取

關(guān)鍵詞:QAction的信號、文件打開操作、文件保存操作、文件另存為操作

1. QAction的信號

  • QAction被點(diǎn)擊之后會(huì)產(chǎn)生一個(gè)triggered信號
    通過信號與槽的機(jī)制能夠捕捉對QAction對象的操作,項(xiàng)目中可以將多個(gè)信號映射到同一個(gè)槽函數(shù)
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. 小結(jié)

  • Qt項(xiàng)目中盡量將界面代碼功能代碼分離開
  • Qt項(xiàng)目開發(fā)時(shí)盡量復(fù)用平臺(tái)中提供的相關(guān)組件
  • Qt項(xiàng)目中的多數(shù)情況都是編寫相應(yīng)的槽函數(shù)
    槽函數(shù)用于相應(yīng)用戶操作
    槽函數(shù)是具體功能的觸發(fā)點(diǎn)

聲明:此文章僅是本人在學(xué)習(xí)狄泰QT實(shí)驗(yàn)分析課程所做的筆記,文章中包含狄泰軟件資料內(nèi)容,一切版權(quán)歸狄泰軟件所有!
實(shí)驗(yàn)環(huán)境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 韓元旭、余橙、沈開洋 Qt介紹 Qt是一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它早在1991年奇趣科技公司兩位...
    開洋_shen閱讀 16,424評論 4 24
  • Qt 學(xué)習(xí)之路 2(1):序(Qt 學(xué)習(xí)之路 2(1):序) Qt 學(xué)習(xí)之路 2(2):Qt 簡介(Qt 學(xué)習(xí)之路...
    TMAC_EAH閱讀 1,321評論 0 8
  • 為什么在頭文件中有的是使用前置聲明,而有的是包含頭文件? 如下代碼: 前置聲明(forward declarati...
    Joe_HUST閱讀 1,447評論 0 6
  • (一) 不知從什么時(shí)候開始,水清戀上了那片蘆葦叢。 那片蘆葦叢的前邊是一條高高長...
    小慧Joy閱讀 1,223評論 0 2
  • 近來接觸人多,看手機(jī)多了,腦中信息太多,不知覺中我又沒有好心態(tài)了。 五一回娘家兩趟,一趟是為裝修的事,找的老朱,一...
    pennyzhou閱讀 157評論 0 0

友情鏈接更多精彩內(nèi)容