C++ Qt學習筆記(3)QT中的文本處理

1. 富文本和純文本的概念:

純文本: 例如一個txt文件打開,裏面只有文本內容,除此之外什麼都沒有,非常單調,這既是純文本。

富文本:   例如一個.doc的word文件,打開之後,不但有文字,還有圖片,可能不同段落的文本還有不同的顏色,還有表格等內容,這就是富文本

富文本的功能比純文本要更加強大,Qt中的QLineEdit只能處理純文本,而QTextEdit支持富文本處理。

Qt中文檔的基本框架:

Qt對富文本的處理分爲編輯操作和只讀操作兩種方式,一個富文本文檔的結構主要分爲四種:

1. 框架(QtextFrame)                    QTextFrameFormat

2. 文本塊 (QTextBlock)                QTextBlockFormat

3. 表格(QtextTable)                     QTextTableFormat

4. 列表 (QTextList)                           QTextListFormat

每一種元素的格式使用相應的Format類來表示,這些格式在編輯文檔時使用,需要搭配QTextCusor,  QTextEdit類就是一個富文本編輯器,所以在構建QTextEdit類對象的時候就已經構建了一個QTextDocument類對象和一個QTextCursor類對象,只要調用他們進行相應的操作即可.

1. 文本塊:
定義槽函數,用於讀取文本塊的內容

private slots:
    void on_textBlock_triggered();

在將textblock菜單連接到槽函數之後,定義槽函數如下:

void MainWindow::on_textBlock_triggered()
{
    qDebug() << "Text block" << endl;
    QTextDocument* document = ui->textEdit->document();    // 文檔框架QTextDocument類

    // 獲取文本塊
    QTextBlock block = document->firstBlock();
    for(int i=0; i<document->blockCount(); i++)
    {
        qDebug() << tr("block:%1, block line number: %2, block length: %3, content:%4").
                    arg(i).arg(block.firstLineNumber()).arg(block.length()).arg(block.text());
        // 更新block
        block  = block.next();
    }

}

可以根據TextEdit中的內容,獲取文本:

輸出結果:

Qt中,tr()能夠將普通字符串轉化爲QString類型,arg()函數能夠將字符串中的參數傳入字符串。

2. 表格,列表與圖片

可以在QTextEdit中分別出入表格,列表,以及圖片,

void MainWindow::on_textTable_triggered()
{
    ui->textEdit->clear();
    QTextCursor cursor = ui->textEdit->textCursor();     // 獲取文本光標
    QTextTableFormat format;
    format.setCellSpacing(2);
    format.setCellPadding(10);
    cursor.insertTable(2, 2, format);   // 創建一個表格   row, column style
}


void MainWindow::on_textList_triggered()
{
    ui->textEdit->clear();
    QTextCursor cursor = ui->textEdit->textCursor();     // 獲取文本光標
    QTextListFormat format;
    format.setStyle(QTextListFormat::ListDecimal);
    cursor.insertList(format);
}

void MainWindow::on_textImage_triggered()
{
    ui->textEdit->clear();
    QTextCursor cursor = ui->textEdit->textCursor();
    QTextImageFormat format;
    format.setName("../qt.jpg");    //指定圖片路徑
}

------------------------------------------------------------------------------------------------------

 

 

發佈了103 篇原創文章 · 獲贊 57 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章