2013-03-14 115 views
0

我需要製作非常大的QTextDocument(在富文本模式下)的預覽版本副本。 因此,我需要像clone()這樣的功能,但能夠指定限制。 也就是說clone (int maxChars)。 正如我從clone()源代碼瞭解到的,它只是將一個文檔複製到另一個文件作爲單個QTextDocumentFragment。所以,我不能以我需要的方式修改這個過程。如何部分複製一個QTextDocument到其他所有格式的文件

任何想法如何實現?

回答

3

大概要做到以下幾點:

  1. 呼叫cursor.movePosition(QTextCursor::Start)QTextDocument創建QTextCursor。這會將光標位置設置到文檔的開頭
  2. 請致電cursor.movePosition(QTextCursor::NextWord, QTextCursor::KeepAnchor, n),其中n是您希望在您選擇的字詞數量。
  3. 致電cursor.selection()。此方法將返回選定的QTextDocumentFragment
+0

嗯,甚至不知道QTextCursor存在。男人,Qt幾乎所有的東西都有一堂課。爲了清晰和簡潔,+1。 – 2013-03-14 06:49:27

+0

I.e.你建議逐字複製?我害怕只有一件事 - 這個代碼對於複雜格式的文本(我的情況)將工作緩慢。但我檢查這個,謝謝你的答案! – eraxillan 2013-03-14 07:00:34

+0

@Axilles如果您需要移動特定數量的字符,您可以使用'QTextCursor :: Left'而不是'QTextCursor :: NextWord'。 – user2155932 2013-03-14 07:10:10

0

如果使用富文本(通過HTML標記指定)執行以下操作:

// assuming some QTextDocument named 'source', return rich text as html QString object 
QString html = source.toHtml(); 

// pass substring to new QTextDocument instance 
QTextDocument dest(html.mid(startChar,endChar)); 

其中STARTCHAR和則EndChar是從源頭另外,QTextDocument HTML字符串的整數索引。

+0

因爲在這種情況下,我需要解析html以使其有效(處理打開和關閉標籤等)。 – eraxillan 2013-03-14 06:11:54

相關問題