расширить определение блока в QTextDocument

Насколько я знаю (официальный источник), Qt определяет блок в QTextDocument как набор символов, сопровождаемых \ п или похожий персонаж. Следовательно …

QTextDocument* doc = my_qtextedit.document();
QTextCursor cur = QTextCursor(doc);

cur.insertText("aaa\nbbb");

qDebug() << "nbr of blocks" << doc->blockCount();

… печать «nbr блоков = 2».

Но мне нужно

  • (1) разделить мой текст на несколько частей, произвольно разграниченных. От
    Например, я должен быть в состоянии разбить предложение «Мне двадцать» на
    четыре блока: «я», «я», «м» и «двадцать».
  • (2) легко получить доступ и изменить эти части (и отобразить их в объекте QTextEdit).

Электрический ток блок Механизм интересен благодаря функциям / итераторам find (), begin (), …, но я не могу понять, как специализировать его в соответствии с моими требованиями.

Есть ли способ добиться этого?

Обновить : увы кажется сложно.

Обновить : QTextFragment позволяет только изменить формат текста.

3

Решение

Я также пострадал от решения этой проблемы.

У меня есть две идеи. (Но обе они не уверены.)

Я думаю, что это достигается путем реализации QAbstractTextDocumentLayout
Когда вы перезаписываете метод boudingblock, вы пишете QTextLayout() в методе.
Вы можете переопределить QTextLayout в блоке.

Но это очень мало информации.
Я пытался настроить мой QTextDocument но это было напрасно.

Если вы хотите разделить свой блок на четыре части,
вы можете использовать QTextLayout.formatRange(),

Вы устанавливаете начальную позицию, длину, формат.
Вы можете установить специальный формат для длины от начальной позиции.

QTextLayout() имеет block() само собой.
Вы установилиAdditionalFormat ().
Я думаю, что вы можете сделать это.

QTextBlock в основном равен одному абзацу.
Вы можете сделать новый блок, нажав клавишу ввода или insertBlock(),
Без этого ваше предложение в одном блоке.

Я понятия не имею, чтобы разделить блок с помощью методов.
я пытался setBlockCount() но это было напрасно.

Я думаю, что когда-нибудь решу эту проблему, но …

1

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


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