Как частично скопировать один QTextDocument в другой со всем его форматированием

Мне нужно сделать копию превью-версии очень большого QTextDocument (в режиме форматированного текста).
Итак, мне нужно что-то вроде этого clone() функция, но с возможностью указания лимита.
То есть clone (int maxChars),
Как я понимаю из clone() Исходный код, он просто копирует один документ в другой как один QTextDocumentFragment. Поэтому я не могу изменить этот процесс так, как мне нужно.

Есть идеи, как это реализовать?

0

Решение

Вероятно, вы хотите сделать следующее:

  1. Создайте QTextCursor с вашим QTextDocument как родитель
  2. Вызов cursor.movePosition(QTextCursor::Start), Это установит позицию курсора в начале документа
  3. Вызов cursor.movePosition(QTextCursor::NextWord, QTextCursor::KeepAnchor, n), где n количество слов, которые вы хотите быть в вашем выборе.
  4. Вызов cursor.selection(), Этот метод вернет выбранное QTextDocumentFragment,
3

Другие решения

Если используется форматированный текст (указанный с помощью 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 являются целочисленными индексами строки html из исходного QTextDocument.

0

По вопросам рекламы [email protected]