1. 程式人生 > >OT | QTextEdit的富文字處理—1

OT | QTextEdit的富文字處理—1

富文字:可以使用多種格式,如字型顏色、圖片和表格等。

富文字文件結構元素:框架(QTextFrame)、文字塊(QTextBlock)、表格(QTextTable)、列表(QTextList)

每種結構元素的格式有相應的format類。

QTextEdit是一個富文字編輯器,在構建它的物件的時候就已經構建了一個QTextDocument和一個QTextCursor物件,只需要呼叫就好。

一、對於框架(QTextFrame)格式風格設定,可以使用QTextFrameFormat類,比如:

QTextDocument *document=ui->textEdit->document();//獲得ui檔案中的textEdit物件
QTextFrame *rootFrame=document->rootFrame();//獲取根框架

QTextFrameFormat format;
format.setBorderBrush(Qt::red);//設定邊界顏色
format.setBorder(1);//設定邊框寬度
format.setBackground(Qt::lightGray);//設定背景顏色
format.setMargin(0);//設定邊距
format.setPadding(0);//設定填襯
format.setBorderStyle(QTextFrameFormat::BorderStyle_Dotted);//設定邊框樣式

rootFrame->setFrameFormat(format);//往根框架中載入設定好的格式

二、文字塊的格式設定

一個文字塊就可看成一個段落,一個回車換行就表示建立一個新的文字塊。

文字塊格式需要QTextBlockFormat類來處理,涉及對齊方式、文字塊四周邊距,縮排等。

文字內容格式使用QTextCharFormat類設定,如字型大小、加粗、下劃線等。

比如:

QTextCursor cursor=ui->textEdit->textCursor();

QTextBlockFormat blockFormat;
blockFormat.setAlignment(Qt::AlignCenter);
cursor.setBlockFormat(blockFormat);
qDebug()<<cursor.hasSelection();

QTextCharFormat charFormat;//字元格式
charFormat.setBackground(Qt::lightGray);//背景色
charFormat.setForeground(Qt::blue);//字型顏色
charFormat.setFont(QFont(tr("宋體"),12,QFont::Bold,true));//設定宋體,12號,加粗,傾斜
charFormat.setFontUnderline(true);//使用下劃線
cursor.setCharFormat(charFormat);
qDebug()<<cursor.hasSelection();

上面的程式碼我曾經把setBlockFormat寫成了insertBlock,導致後面選中的文字被清了。還花了很長時間去找出現的原因。