Мне нужно сделать копию превью-версии очень большого 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 являются целочисленными индексами строки html из исходного QTextDocument.