我需要制作非常大的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