我需要製作非常大的QTextDocument(在富文本模式下)的預覽版本副本。 因此,我需要像clone()
這樣的功能,但能夠指定限制。 也就是說clone (int maxChars)
。 正如我從clone()
源代碼瞭解到的,它只是將一個文檔複製到另一個文件作爲單個QTextDocumentFragment。所以,我不能以我需要的方式修改這個過程。如何部分複製一個QTextDocument到其他所有格式的文件
任何想法如何實現?
我需要製作非常大的QTextDocument(在富文本模式下)的預覽版本副本。 因此,我需要像clone()
這樣的功能,但能夠指定限制。 也就是說clone (int maxChars)
。 正如我從clone()
源代碼瞭解到的,它只是將一個文檔複製到另一個文件作爲單個QTextDocumentFragment。所以,我不能以我需要的方式修改這個過程。如何部分複製一個QTextDocument到其他所有格式的文件
任何想法如何實現?
大概要做到以下幾點:
cursor.movePosition(QTextCursor::Start)
與QTextDocument
創建QTextCursor
。這會將光標位置設置到文檔的開頭cursor.movePosition(QTextCursor::NextWord, QTextCursor::KeepAnchor, n)
,其中n
是您希望在您選擇的字詞數量。cursor.selection()
。此方法將返回選定的QTextDocumentFragment
。如果使用富文本(通過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字符串的整數索引。
因爲在這種情況下,我需要解析html以使其有效(處理打開和關閉標籤等)。 – eraxillan 2013-03-14 06:11:54
嗯,甚至不知道QTextCursor存在。男人,Qt幾乎所有的東西都有一堂課。爲了清晰和簡潔,+1。 – 2013-03-14 06:49:27
I.e.你建議逐字複製?我害怕只有一件事 - 這個代碼對於複雜格式的文本(我的情況)將工作緩慢。但我檢查這個,謝謝你的答案! – eraxillan 2013-03-14 07:00:34
@Axilles如果您需要移動特定數量的字符,您可以使用'QTextCursor :: Left'而不是'QTextCursor :: NextWord'。 – user2155932 2013-03-14 07:10:10