我需要制作一个非常大的 QTextDocument 的预览版副本(在富文本模式下)。所以,我需要它的clone()
功能,但能够指定限制。即clone (int maxChars)
。正如我从clone()
源代码中了解的那样,它只是将一个文档作为单个 QTextDocumentFragment 复制到另一个文档。所以,我不能以我需要的方式修改这个过程。
任何想法如何实现这一点?
我需要制作一个非常大的 QTextDocument 的预览版副本(在富文本模式下)。所以,我需要它的clone()
功能,但能够指定限制。即clone (int maxChars)
。正如我从clone()
源代码中了解的那样,它只是将一个文档作为单个 QTextDocumentFragment 复制到另一个文档。所以,我不能以我需要的方式修改这个过程。
任何想法如何实现这一点?
可能您想要执行以下操作:
QTextCursor
与您QTextDocument
作为父母一起创建cursor.movePosition(QTextCursor::Start)
。这会将光标的位置设置为文档的开头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 字符串的整数索引。