若該文爲原創文章,未經允許不得轉載
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客導航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/105596065
各位讀者,知識無窮而人力有窮,要麼改需求,要麼找專業人士,要麼自己研究
目錄
enum QTextDocument::MetaInformation
enum QTextDocument::ResourceType
enum QTextCursor::MoveMode:移動模式
enum QTextCursor::MoveOperation:移動操作
紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬結合等等)持續更新中...(點擊傳送門)
Qt開發專欄:開發技術(傳送門)
《Qt開發技術:Qt富文本(二)Qt文本光標操作、文檔佈局、富文本編輯、處理和Demo》
《Qt開發技術:Qt富文本(三)Qt支持的HTML子集(查詢手冊)以及涉及的類》
Qt開發技術:Qt富文本(三)Qt支持的HTML子集(查詢手冊)以及涉及的類
前話
紅胖子,來也!
Qt的富文本技術介紹,Qt5.9支持的HTML子集,留存當作查詢工具,附帶開發富文本使用到的Qt類列表。
支持的HTML子集
概述
Qt的文本小部件能夠顯示富文本,這是使用HTML 4標記的子集指定的。使用QTextDocument的小部件(如QLabel和QTextEdit)能夠以這種方式顯示指定的富文本。
在文本小部件中使用HTML標記
小部件自動檢測HTML標記並相應地顯示富文本。例如,使用字符串“<b>Hello</b><i>Qt!</i>”設置標籤的文本屬性,顯示如下文本:“Hello Qt!”。
當HTML標記用於文本時,Qt遵循HTML4規範定義的規則。這包括文本佈局的默認屬性,例如文本流的方向(從左到右),可以通過將dir屬性應用於文本塊來更改。
支持的標記
下表列出了Qt的富文本引擎支持的HTML標記:
序號 |
標記 |
描述 |
備註 |
1 |
a |
錨或鏈環 |
支持href和name屬性。 |
2 |
address |
地址 |
|
3 |
b |
粗體 |
|
4 |
big |
大字體 |
|
5 |
blockquote |
縮進段落 |
|
6 |
body |
文件正文 |
支持bgcolor屬性,它可以是Qt顏色名稱或RRGGBB顏色規範。 |
7 |
br |
換行符 |
|
8 |
center |
居中段落 |
|
9 |
cite |
內聯引用 |
Same as i |
10 |
code |
代碼 |
Same as tt |
11 |
dd |
定義數據 |
|
12 |
dfn |
定義 |
Same as i. |
13 |
div |
文件分隔 |
支持標準塊屬性。 |
14 |
dl |
定義列表 |
支持標準塊屬性。 |
15 |
dt |
定義術語 |
支持標準塊屬性。 |
16 |
em |
強調 |
Same as i. |
17 |
font |
字體大小、系列和/或顏色 |
支持以下屬性:大小、面和顏色(Qt顏色名稱或RRGGBB)。 |
18 |
h1 |
一級標題 |
|
19 |
h2 |
二級標題 |
|
20 |
h3 |
三級標題 |
|
21 |
h4 |
四級標題 |
|
22 |
h5 |
五級標題 |
|
23 |
h6 |
六級標題 |
|
24 |
head |
文檔標題 |
|
25 |
hr |
水平線 |
|
26 |
html |
HTML文檔 |
|
27 |
i |
斜體 |
|
28 |
img |
圖像 |
支持src、source(與Qt 3兼容)、width和height屬性。 |
29 |
kbd |
用戶輸入的文本 |
|
30 |
meta |
元信息 |
如果使用meta標記指定了文本編碼,則Qt::codecForHtml()將接收該文本編碼。同樣,如果將編碼指定給QTextDocument::toHtml(),則使用元標記存儲編碼,例如: <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> |
31 |
li |
列表項 |
|
32 |
nobr |
不可斷文本 |
|
33 |
ol |
有序列表 |
支持標準列表屬性。 |
34 |
p |
段落 |
默認情況下左對齊。支持標準塊屬性。 |
35 |
pre |
預格式文本 |
|
36 |
qt |
Qt富文本文檔 |
html的同義詞。爲與早期版本的Qt兼容而提供。 |
37 |
s |
刪除線 |
|
38 |
samp |
示例代碼 |
|
39 |
small |
小字體 |
|
40 |
span |
分組元素 |
|
41 |
strong |
加粗 |
|
42 |
sub |
下標 |
|
43 |
sup |
上標 |
|
44 |
table |
表格 |
支持以下屬性:border、bgcolor(Qt顏色名稱或RRGGBB)、cellspacing、cellpadding、width(絕對或相對)和height。 |
45 |
tbody |
表格體 |
什麼都不做 |
46 |
td |
表數據單元 |
支持標準表單元格屬性。 |
47 |
tfoot |
表頁腳 |
什麼都不做 |
48 |
th |
表標題單元格 |
支持標準表單元格屬性。 |
49 |
thead |
表格標題 |
如果指定了thead標記,則在打印跨多頁的表時使用它。 |
50 |
title |
標題 |
使用title標記指定的值可通過QTextDocument::metaInformation()獲得。 |
51 |
tr |
表格行 |
支持bgcolor屬性,它可以是Qt顏色名稱或RRGGBB顏色規範。 |
52 |
tt |
打字字體 |
|
53 |
u |
下劃線 |
|
54 |
ul |
無序列表 |
支持標準列表屬性。 |
55 |
var |
變量 |
Same as i. |
塊屬性
div、dl、dt、h1、h2、h3、h4、h5、h6、p標記支持以下屬性:
- align (left, right, center, justify)
- dir (ltr, rtl)
列表屬性
ol和ul標記支持以下屬性:
- type (1, a, A, square, disc, circle)
表單元格屬性
td和th標記支持以下屬性:
- width (absolute, relative, or no-value)
- bgcolor (Qt color names or #RRGGBB)
- colspan
- rowspan
- align (left, right, center, justify)
- valign (top, middle, bottom)
CSS屬性
下表列出了Qt的富文本引擎支持的CSS屬性:
序號 |
屬性 |
值 |
描述 |
1 |
background-color |
<color> |
元素的背景色 |
2 |
background-image |
<uri> |
元素的背景圖像 |
3 |
color |
<color> |
文本前景色 |
4 |
font-family |
<family name> |
字體名稱 |
5 |
font-size |
[ small | medium | large | x-large | xx-large ] | <size>pt | <size>px |
相對於文檔字體或以點或像素爲單位指定的字體大小 |
6 |
font-style |
[ normal | italic | oblique ] |
|
7 |
font-weight |
[ normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 ] |
指定用於文本的字體權重,其中normal和bold映射到相應的QFont權重。數值是等效QFont權重值的8倍。 |
8 |
text-decoration |
none | [ underline || overline || line-through ] |
附加文本效果 |
9 |
font |
[ [ <'font-style'> || <'font-weight'> ]? <'font-size'> <'font-family'> ] |
字體速記屬性 |
10 |
text-indent |
<length>px |
以像素爲單位的第一行文本縮進 |
11 |
white-space |
normal | pre | nowrap | pre-wrap |
聲明如何處理HTML中的空白。 |
12 |
margin-top |
<length>px |
以像素爲單位的頂部段落邊距 |
13 |
margin-bottom |
<length>px |
以像素爲單位的底部段落邊距 |
14 |
margin-left |
<length>px |
以像素爲單位的左段落邊距 |
15 |
margin-right |
<length>px |
以像素爲單位的右段落邊距 |
16 |
padding-top |
<length>px |
頂部表格單元格填充(像素) |
17 |
padding-bottom |
<length>px |
底部表格單元格填充(像素) |
18 |
padding-left |
<length>px |
左表單元格填充(像素) |
19 |
padding-right |
<length>px |
右表格單元格填充(像素) |
20 |
padding |
<length>px |
一次設置所有填充屬性的簡寫。 |
21 |
vertical-align |
baseline | sub | super | middle | top | bottom |
垂直文本對齊。對於文本表格單元格中的垂直對齊,只應用中間、頂部和底部。 |
22 |
border-color |
<color> |
文本表的邊框顏色。 |
23 |
border-style |
none | dotted | dashed | dot-dash | dot-dot-dash | solid | double | groove | ridge | inset | outset |
文本表的邊框樣式。 |
24 |
background |
[ <'background-color'> || <'background-image'> ] |
背景速記屬性 |
25 |
page-break-before |
[ auto | always ] |
使在段落/表之前強制分頁符 |
26 |
page-break-after |
[ auto | always ] |
使在段落/表之後強制分頁符 |
27 |
float |
[ left | right | none ] |
指定圖像或文本將放置在另一個元素中的位置。請注意,float屬性僅支持表和圖像。 |
28 |
text-transform |
[ uppercase | lowercase ] |
選擇在顯示文本之前將對其執行的轉換。 |
29 |
font-variant |
small-caps |
在顯示文本之前對其執行smallcaps轉換。 |
30 |
word-spacing |
<width>px |
指定每個單詞之間的間距。 |
富文本處理相關類
Qt爲解析、呈現、操作和編輯富文本提供了大量的類集合。
序號 |
類 |
描述 |
1 |
QAbstractTextDocumentLayout |
用於實現QTextDocuments自定義佈局的抽象基類 |
2 |
QFont |
指定用於繪製文本的字體 |
3 |
QSyntaxHighlighter |
允許您定義語法突出顯示規則,此外,還可以使用該類查詢文檔的當前格式或用戶數據 |
4 |
QTextCursor |
提供訪問和修改QTextDocuments的API |
5 |
QTextDocument |
保存格式化文本 |
6 |
QTextDocumentFragment |
表示來自QTextDocument的格式化文本 |
7 |
QTextDocumentWriter |
用於將QTextDocument寫入文件或其他設備的獨立於格式的接口 |
8 |
QTextBlockFormat |
QTextDocument中文本塊的格式信息 |
9 |
QTextCharFormat |
QTextDocument中字符的格式信息 |
10 |
QTextFormat |
QTextDocument的格式信息 |
11 |
QTextFrameFormat |
QTextDocument中文本框架的格式信息 |
12 |
QTextImageFormat |
QTextDocument中圖像的格式信息 |
13 |
QTextLength |
封裝QTextDocument中使用的不同長度類型 |
14 |
QTextListFormat |
QTextDocument中列表的格式信息 |
15 |
QTextTableCellFormat |
QTextDocument中表格單元格的格式信息 |
16 |
QTextTableFormat |
QTextDocument中表的格式信息 |
17 |
QTextInlineObject |
表示QAbstractTextDocumentLayout中的內聯對象及其實現 |
18 |
QTextLayout |
用於佈局和呈現文本 |
19 |
QTextLine |
表示QTextLayout中的一行文本 |
20 |
QTextList |
QTextDocument中項目的修飾列表 |
21 |
QTextBlock |
QTextDocument中文本片段的容器 |
22 |
QTextBlockGroup |
QTextDocument中文本塊的容器 |
23 |
QTextBlockUserData |
用於將自定義數據與文本塊關聯 |
24 |
QTextFragment |
以單個QTextCharFormat保存QTextDocument中的文本 |
25 |
QTextFrame |
表示QTextDocument中的文本框架 |
26 |
QTextObject |
可以將QTextDocument的各個部分組合在一起的不同類型對象的基類 |
27 |
QTextFrame::iterator |
用於讀取QTextFrame內容的迭代器 |
28 |
QTextBlock::iterator |
用於讀取QTextBlock內容的迭代器 |
29 |
QTextOption |
一般富文本屬性的描述 |
30 |
QTextTable |
表示QTextDocument中的表 |
31 |
QTextTableCell |
表示QTextTable中單元格的屬性 |
32 |
QPlainTextDocumentLayout |
爲QTextDocument實現純文本佈局 |
33 |
QPlainTextEdit |
用於編輯和顯示純文本的小部件 |
34 |
QTextBrowser |
帶超文本導航的富文本瀏覽器 |
35 |
QTextEdit |
用於編輯和顯示純文本和富文本的小部件 |
QTextBlock
概述
QTextDocument類保存格式化文本。
QTextDocument是結構化富文本文檔的容器,爲樣式文本和各種類型的文檔元素(如列表、表、框架和圖像)提供支持。它們可以創建爲在QTextEdit中使用,也可以單獨使用。
每個文檔元素都由關聯的格式對象描述。QTextDocuments將每個format對象視爲唯一的對象,並可以將其傳遞給objectForFormat()以獲取要應用到的document元素。
可以使用QTextCursor以編程方式編輯QTextDocument,還可以通過遍歷文檔結構來檢查其內容。整個文檔結構存儲爲根框架下的文檔元素層次結構,根框架是通過rootFrame()函數找到的。或者,如果只想遍歷文檔的文本內容,可以使用begin()、end()和findBlock()來檢索可以檢查和遍歷的文本塊。
文檔的佈局由documentLayout()決定;如果要使用自己的佈局邏輯,可以創建自己的QAbstractTextDocumentLayout子類並使用setDocumentLayout()設置它。通過調用metaInformation()函數可以獲得文檔的標題和其他元信息。對於通過QTextEdit類向用戶公開的文檔,還可以通過QTextEdit::documentTitle()函數使用文檔標題。
toPlainText()和toHtml()函數允許以純文本和HTML的形式檢索文檔內容。可以使用find()函數搜索文檔的文本。
可以使用setUndoRedoEnabled()函數控制對文檔執行的操作的撤消/重做。undo/redo系統可以由編輯器小部件通過undo()和redo()插槽控制;文檔還提供contentsChanged()、undoAvailable()和redoAvailable()信號,通知連接的編輯器小部件undo/redo系統的狀態。以下是QTextDocument的撤消/重做操作:
- 插入或刪除字符。同一文本塊中的插入或刪除序列被視爲單個撤消/重做操作。
- 插入或刪除文本塊。單個操作中的插入或刪除序列(例如,通過選擇然後刪除文本)被視爲單個撤消/重做操作。
- 文本字符格式更改。
- 文本塊格式更改。
- 文本塊組格式更改。
枚舉
enum QTextDocument::FindFlag
此枚舉描述QTextDocument的find函數可用的選項。這些選項可以從以下列表中選擇或組合在一起:
序號 |
枚舉 |
值 |
描述 |
1 |
QTextDocument::FindBackward |
0 |
向後搜索而不是向前搜索 |
2 |
QTextDocument::FindCaseSensitively |
1 |
默認情況下,find works不區分大小寫。指定此選項會將行爲更改爲區分大小寫的查找操作 |
3 |
QTextDocument::FindWholeWords |
4 |
使查找只匹配完整的單詞 |
FindFlags類型是QFlags<FindFlag>的typedef。它存儲FindFlag值的一個或多個組合。
enum QTextDocument::MetaInformation
此枚舉描述可以添加到文檔中的不同類型的元信息。
序號 |
枚舉 |
值 |
描述 |
1 |
QTextDocument::DocumentTitle |
0 |
文件的標題。 |
2 |
QTextDocument::DocumentUrl |
1 |
文檔的url。loadResource()函數的作用是:加載此url作爲資源。 |
enum QTextDocument::ResourceType
此枚舉描述QTextDocument的loadResource()函數可以加載的資源類型。
序號 |
枚舉 |
值 |
描述 |
1 |
QTextDocument::HtmlResource |
1 |
資源包含HTML。 |
2 |
QTextDocument::ImageResource |
2 |
資源包含圖像數據。當前支持的數據類型是QVariant::Pixmap和QVariant::Image。 如果對應的變量類型爲QVariant::ByteArray,則Qt嘗試使用QImage::loadFromData加載圖像。當前不支持QVariant::Icon。 首先需要將圖標轉換爲支持的類型之一,例如使用QIcon::pixmap。 |
3 |
QTextDocument::StyleSheetResource |
3 |
資源包含CSS |
4 |
QTextDocument::UserResource |
100 |
用戶定義的資源類型的第一個可用值。 |
enum QTextDocument::Stacks
序號 |
枚舉 |
值 |
描述 |
1 |
QTextDocument::UndoStack |
1 |
撤消堆棧 |
2 |
QTextDocument::RedoStack |
2 |
重做堆棧 |
3 |
QTextDocument::UndoAndRedoStacks |
1 | 2 |
撤消和重做堆棧 |
QTextFrame
概述
QTextFrame類表示QTextDocument中的文本框架。
文本框架爲文檔中的文本提供了結構。它們用作其他文檔元素的通用容器。框架通常使用QTextCursor::insertFrame()創建。
QTextFrame可用於在富文本文檔中創建層次結構。每個文檔都有一個根框架(QTextDocument::rootFrame()),根框架下的每個框架都有一個父框架和一個(可能是空的)子框架列表。父文本框架可以通過parentFrame()找到,childFrames()函數提供子文本框架列表。
每個框架至少包含一個文本塊,使文本光標能夠在其中插入新的文檔元素。因此,QTextFrame::iterator類用於遍歷給定文本框架中的塊和子文本框架。框架中的第一個子元素和最後一個子元素可以用begin()和end()找到。
框架還有一種格式(使用QTextFrameFormat指定),可以用setFormat()設置,也可以用format()讀取。
可以獲得指向文本框架中第一個和最後一個有效光標位置的文本光標;爲此,請使用firstCursorPosition()和lastCursorPosition()函數。文檔中框架的範圍可以使用firstPosition()和lastPosition()找到。
可以使用QTextFrame::iterator類迭代文本框架的內容:這提供了對其內部文本塊和子文本框架列表的只讀訪問。
QTextTable
概述
QTextTable類表示QTextDocument中的表。
表是按行和列排序的一組單元格。每個表至少包含一行和一列。每個單元格包含一個塊,並由一個框架包圍。
表通常使用QTextCursor::insertTable()函數創建並插入到文檔中。例如,可以使用以下代碼行在編輯器中的當前光標位置插入一個包含三行和兩列的表:
QTextCursor cursor(editor->textCursor());
cursor.movePosition(QTextCursor::Start);
QTextTable *table = cursor.insertTable(rows, columns, tableFormat);
表格式是在創建表時定義的,或者使用setFormat()更改。
通過QTextCursor::currentTable()找到當前由遊標編輯的表。這允許在將其插入文檔後更改其格式或維度。
可以使用resize()更改表的大小,也可以使用insertRows()、insertColumns()、removeRows()或removeColumns()更改表的大小。使用cellAt()檢索表單元格。
通過在表中移動光標,並使用rowStart()和rowEnd()函數在每行的開始和結束處獲取光標,可以找到錶行的開始和結束位置。
可以使用mergeCells()和splitCell()函數合併和拆分QTextTable中的行和列。但是,只能拆分跨多行或多列的單元格。(合併或拆分不會增加或減少行數和列數。)
請注意,如果已將多個列和行合併到一個單元格中,則無法將合併的單元格拆分爲跨越多個行或列的新單元格。要能夠拆分跨越多個行和列的單元格,您需要在多個迭代中執行此操作。
有一個2x3的名稱和地址表。
爲了合併第一行中的兩列,調用了mergeCells(),row=0,column=0,numRows=1,numColumns=2。
table->mergeCells(0, 0, 1, 2);
若要將表的第一行拆分爲兩個單元格,請使用numRows和numCols=1調用splitCell()函數。
table->splitCell(0, 0, 1, 1);
恢復原始表:
QTextList
概述
QTextList類提供QTextDocument中項目的修飾列表。
列表包含一系列文本塊,每個文本塊都用項目符號或其他符號標記。可以使用多個級別的列表,並且自動編號功能支持順序數字和字母列表。
列表是通過使用文本光標在當前位置插入空列表或將現有文本移動到新列表中來創建的。函數的作用是:在文檔的光標位置插入一個空塊,使其成爲列表中的第一項。
QTextListFormat listFormat;
if (list)
{
listFormat = list->format();
listFormat.setIndent(listFormat.indent() + 1);
}
listFormat.setStyle(QTextListFormat::ListDisc);
cursor.insertList(listFormat);
QTextCursor::createList()函數的作用是:獲取光標當前塊的內容,並將其轉換爲新列表的第一項。
光標的當前列表使用QTextCursor::currentList()找到。
列表中的項數由count()給定。使用item()函數可以通過列表中的索引獲取每個項。類似地,可以使用itemNumber()找到給定項的索引。使用itemText()函數可以找到每個項的文本。
請注意,列表中的項可能不是文檔中的相鄰元素。例如,多級列表中的頂級項將由列表中較低級別的項分隔。
可以使用removeItem()函數通過索引刪除列表項。remove()刪除列表中的指定項。
列表的格式用setFormat()設置,用format()讀取。格式描述的是列表本身的屬性,而不是單個項。
QTextFragment
概述
QTextFragment類以單個QTextCharFormat保存QTextDocument中的一段文本。
文本片段描述以單個字符格式存儲的文本片段。字符格式改變的文本可以用不同格式的文本片段序列表示。
如果用戶在片段中編輯文本並引入不同的字符格式,則片段的文本將在格式更改的每個點處拆分,並創建新的片段。例如,在句子中間更改某個文本的樣式將導致該片段分成三個獨立的片段:第一個和第三個片段的格式與之前相同,第二個片段的格式與之前相同。第一個片段將包含句子開頭的文本,第二個片段將包含中間的文本,第三個片段從句子結尾獲取文本。
片段的文本和字符格式可以通過text()和charFormat()函數獲得。Length()函數的作用是:給出片段中文本的長度。position()給出片段開始在文檔中的位置。使用contains()函數確定片段是否包含文檔中的特定位置。
QTextImageFormat
概述
QTextImageFormat類爲qtext文檔中的圖像提供格式信息。
內聯圖像由Unicode值U+FFFC(對象替換字符)表示,該值具有關聯的QTextImageFormat。圖像格式使用setName()指定用於定位圖像的名稱。圖像將佔用的矩形的大小是使用setWidth()和setHeight()指定的。
圖像可以以Qt有圖像閱讀器的任何格式提供,因此SVG圖形可以與PNG、TIFF和其他位圖格式一起提供。
QTextCursor
概述
QTextCursor類提供了訪問和修改QTextDocuments的API。
文本光標是通過模擬文本編輯器中光標行爲的編程接口訪問和修改文本文檔的內容和底層結構的對象。QTextCursor包含有關光標在QTextDocument中的位置及其所做的任何選擇的信息。
QTextCursor是根據文本光標在文本編輯器中的行爲方式建模的,它提供了通過用戶界面執行標準操作的編程方法。文檔可以看作是一個字符串。光標的當前position()始終位於字符串中兩個連續字符之間,或者位於字符串中第一個字符之前或最後一個字符之後。除了文本之外,文檔還可以包含表、列表、圖像和其他對象,但從開發人員的角度來看,文檔可以被視爲一個長字符串。該字符串的某些部分可以被視爲位於特定塊(例如段落)中,或位於表單元格、列表項或其他結構元素中。當我們提到“當前字符”時,我們指的是文檔中光標position()之前的字符。類似地,“當前塊”是包含光標position()的塊。
QTextCursor還有一個anchor()位置。anchor()和position()之間的文本是選擇。如果anchor()==position(),則沒有選擇。
可以使用setPosition()和movePosition()以編程方式更改光標位置;後者也可以用於選擇文本。相關函數 selectionStart()、selectionEnd()、hasSelection()、clearSelection()和removeSelectedText()。
如果position()位於塊的開頭,則atBlockStart()返回true;如果它位於塊的結尾,則atBlockEnd()返回true。當前字符的格式由charFormat()返回,當前塊的格式由blockFormat()返回。
可以使用setCharFormat()、mergeCharFormat()、setBlockFormat()和mergeBlockFormat()函數將格式應用於當前文本文檔。“set”函數將替換光標的當前字符或塊格式,而“merge”函數將給定的格式屬性添加到光標的當前格式。如果光標有選擇,則將給定格式應用於當前選擇。請注意,僅選擇塊的一部分時,塊格式將應用於整個塊。可以使用createList()將當前字符位置的文本轉換爲列表。
可以使用deleteChar()、deletePreviousChar()和removeSelectedText()實現刪除。
文本字符串可以用insertText()函數插入到文檔中,塊(代表新段落)可以用insertBlock()插入。
現有的文本片段可以使用insertFragment()插入,但是,如果要插入各種格式的文本片段,通常使用insertText()並提供字符格式更容易。
還可以使用光標將各種類型的高級結構插入到文檔中:
-
列表是用項目符號或符號修飾的塊元素的有序序列。它們是用insertList()以指定格式插入的。
-
表是用insertTable()函數插入的,可以指定可選格式。這些單元格包含一個可以使用光標遍歷的單元格數組。
-
使用insertImage()插入內聯圖像。要使用的圖像可以用圖像格式或名稱指定。
-
通過使用指定格式調用insertFrame()插入文本框架。
可以使用beginEditBlock()和endEditBlock()對操作進行分組(即將其視爲撤消/重做的單個操作)。
光標移動僅限於有效的光標位置。在拉丁語寫作中,這是在文本中任何兩個連續字符之間,在第一個字符之前,或在最後一個字符之後。在其他一些書寫系統中,光標的移動僅限於“簇”(例如天成文書中的一個音節,或一個基音字母加上變音符號)。movePosition()和deleteChar()等函數將光標移動限制在這些有效位置。
枚舉
enum QTextCursor::MoveMode:移動模式
序號 |
枚舉 |
值 |
描述 |
1 |
QTextCursor::MoveAnchor |
0 |
將定位點移動到與光標本身相同的位置 |
2 |
QTextCursor::KeepAncho |
1 |
把錨放在原地 |
如果anchor()保持在原來的位置,並且position()移動,則將選擇介於兩者之間的文本。
enum QTextCursor::MoveOperation:移動操作
序號 |
枚舉 |
值 |
描述 |
1 |
QTextCursor::NoMove |
0 |
把光標放在原地 |
2 |
QTextCursor::Start |
1 |
移到文檔的開頭 |
3 |
QTextCursor::StartOfLine |
3 |
移到當前行的開頭 |
4 |
QTextCursor::StartOfBlock |
4 |
移到當前塊的開頭 |
5 |
QTextCursor::StartOfWord |
5 |
移到當前單詞的開頭 |
6 |
QTextCursor::PreviousBlock |
6 |
移到上一個塊的開頭 |
7 |
QTextCursor::PreviousCharacter |
7 |
移到上一個字符。 |
8 |
QTextCursor::PreviousWord |
8 |
移到上一個單詞的開頭。 |
9 |
QTextCursor::Up |
2 |
向上移動一行。 |
10 |
QTextCursor::Left |
9 |
向左移動一個字符 |
11 |
QTextCursor::WordLeft |
10 |
左移一個字/單詞 |
12 |
QTextCursor::End |
11 |
移到文檔末尾 |
13 |
QTextCursor::EndOfLine |
13 |
移到當前行的末尾。 |
14 |
QTextCursor::EndOfWord |
14 |
移到當前單詞的結尾。 |
15 |
QTextCursor::EndOfBlock |
15 |
移到當前塊的末尾。 |
16 |
QTextCursor::NextBlock |
16 |
移到下一個塊的開頭。 |
17 |
QTextCursor::NextCharacter |
17 |
移到下一個字符。 |
18 |
QTextCursor::NextWord |
18 |
轉到下一個單詞。 |
19 |
QTextCursor::Down |
12 |
向下移動一行。 |
20 |
QTextCursor::Right |
19 |
向右移動一個字符 |
21 |
QTextCursor::WordRight |
20 |
右移一個字/單詞 |
22 |
QTextCursor::NextCell |
21 |
移到當前表中下一個表單元格的開頭。如果當前單元格是行中的最後一個單元格,則光標將移動到下一行中的第一個單元格。 |
23 |
QTextCursor::PreviousCell |
22 |
移到當前表中上一個表單元格的開頭。如果當前單元格是行中的第一個單元格,則光標將移動到前一行中的最後一個單元格。 |
24 |
QTextCursor::NextRow |
23 |
移到當前表中下一行的第一個新單元格。 |
25 |
QTextCursor::PreviousRow |
24 |
移到當前表中前一行的最後一個單元格。 |
QTextLayout
概述
QTextLayout類用於佈局和呈現文本。
它提供了許多現代文本佈局引擎所需的功能,包括符合Unicode的呈現、換行和光標定位處理。它還可以生成和呈現與設備無關的佈局,這對所見即所得應用程序非常重要。
這個類有一個相當低級的API,除非您打算爲某個特定的小部件實現自己的文本呈現,否則您可能不需要直接使用它。
QTextLayout可以與純文本和富文本一起使用。
QTextLayout可用於創建具有給定寬度的QTextLine實例序列,並可在屏幕上獨立定位它們。一旦佈局完成,就可以在繪製設備上繪製這些線。
要佈局的文本可以在構造函數中提供,也可以使用setText()設置。
佈局可以看作一系列QTextLine對象;使用createLine()創建QTextLine實例,使用lineAt()或lineForTextPosition()檢索創建的行。
下面是佈局階段的代碼片段示例:
int leading = fontMetrics.leading();
qreal height = 0;
textLayout.setCacheEnabled(true);
textLayout.beginLayout();
while (1)
{
QTextLine line = textLayout.createLine();
if (!line.isValid())
{
break;
}
line.setLineWidth(lineWidth);
height += leading;
line.setPosition(QPointF(0, height));
height += line.height();
}
textLayout.endLayout();
然後可以通過調用佈局的draw()函數來呈現文本:
對於文本中的給定位置,可以使用isValidCursorPosition()、nextCursorPosition()和previousCursorPosition()找到有效的光標位置。
QTextLayout本身可以使用setPosition()定位;它有boundingRect()和minimumWidth()和maximumWidth()。
枚舉
enum QTextLayout::CursorMode:
序號 |
枚舉 |
值 |
描述 |
1 |
QTextLayout::SkipCharacters |
0 |
|
2 |
QTextLayout::SkipWords |
1 |
|
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客導航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/105596065