1

我需要制作一个非常大的 QTextDocument 的预览版副本(在富文本模式下)。所以,我需要它的clone()功能,但能够指定限制。即clone (int maxChars)。正如我从clone()源代码中了解的那样,它只是将一个文档作为单个 QTextDocumentFragment 复制到另一个文档。所以,我不能以我需要的方式修改这个过程。

任何想法如何实现这一点?

4

2 回答 2

4

可能您想要执行以下操作:

  1. QTextCursor与您QTextDocument作为父母一起创建
  2. 打电话cursor.movePosition(QTextCursor::Start)。这会将光标的位置设置为文档的开头
  3. 呼叫cursor.movePosition(QTextCursor::NextWord, QTextCursor::KeepAnchor, n)n您希望选择的单词数量在哪里。
  4. 打电话cursor.selection()。此方法将返回选定的QTextDocumentFragment.
于 2013-03-14T06:39:32.697 回答
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 字符串的整数索引。

于 2013-03-14T06:10:52.097 回答