OT | QTextEdit的富文字處理—1
阿新 • • 發佈:2018-12-13
富文字:可以使用多種格式,如字型顏色、圖片和表格等。
富文字文件結構元素:框架(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,導致後面選中的文字被清了。還花了很長時間去找出現的原因。