Qt開發技術:Qt富文本(三)Qt支持的HTML子集(查詢手冊)以及涉及的類

若該文爲原創文章,未經允許不得轉載
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客導航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/105596065
各位讀者,知識無窮而人力有窮,要麼改需求,要麼找專業人士,要麼自己研究

目錄

前話

支持的HTML子集

概述

在文本小部件中使用HTML標記

支持的標記

塊屬性

列表屬性

表單元格屬性

CSS屬性

富文本處理相關類

QTextBlock

概述

枚舉

enum QTextDocument::FindFlag

enum QTextDocument::MetaInformation

enum QTextDocument::ResourceType

enum QTextDocument::Stacks

QTextFrame

概述

QTextTable

概述

QTextList

概述

QTextFragment

概述

QTextImageFormat

概述

QTextCursor

概述

枚舉

enum QTextCursor::MoveMode:移動模式

enum QTextCursor::MoveOperation:移動操作

QTextLayout

概述

枚舉

enum QTextLayout::CursorMode:


紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬結合等等)持續更新中...(點擊傳送門)

Qt開發專欄:開發技術(傳送門)

Qt開發技術: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

圖像

支持srcsource(與Qt 3兼容)、widthheight屬性。

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

表格

支持以下屬性:borderbgcolorQt顏色名稱或RRGGBB)、cellspacingcellpaddingwidth(絕對或相對)和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

提供訪問和修改QTextDocumentsAPI

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

文檔的urlloadResource()函數的作用是:加載此url作爲資源。

enum QTextDocument::ResourceType

      此枚舉描述QTextDocument的loadResource()函數可以加載的資源類型。

序號

枚舉

描述

1

QTextDocument::HtmlResource

1

資源包含HTML。

2

QTextDocument::ImageResource

2

資源包含圖像數據。當前支持的數據類型是QVariant::PixmapQVariant::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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章