2013-03-14 114 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

相关问题