Как добавить встроенные аннотации для qtextedit?

Как я могу добавлять встроенные аннотации, как в Qt Creator? Я использую виджет QTextEdit.

Вот скриншот с демонстрацией встроенных аннотаций. inline annotations qt creator

Самый простой способ - использовать редактор от Qt Creator. В противном случае у вас есть два варианта: определить местоположение текстового блока, который вы аннотируете, а затем перекрасить. Или вы можете вставить элементы документа, представляющие аннотации.

Kuba hasn't forgotten Monica 13.09.2018 19:07
1
1
169
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Думаю...

Вначале,

давай возьмем> са папа; аннотация строки.

ожидал ';'

Это сообщение предназначено только для чтения. вы можете поймать целевой блок любым способом.

Например, QTextCursor может искать и ловить последний символ, используя метод movePosition с флагом EndOfLine, KeepAnchor.

И если выделенный текст не является «;», вы создаете такую ​​аннотацию.

QTextEdit всегда имеет свой объект QTextDocument. Получен методом document().

Этот класс имеет метод findBlock().

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

Поскольку аннотация предназначена только для чтения, вы переопределите метод paintEvent QTextEdit, и это будет хорошо.

И вы делаете объект рисования (QPainter).

Метод painter имеет drawImage («Изображение всплывающего окна» в первой позиции ») и drawText.

У художника есть setBrush, методы setPen устанавливают красный цвет в QColor()

Вы можете использовать метод cursorRect () QTextEdit и уловить приблизительную верхнюю левую позицию для рендеринга текста, потому что методы DrawImage и DrawText требуют в качестве аргумента прямоугольников, поэтому это очень важно. Этот метод cursorRect () может быть объединен с указателем QTextCursor. .

Вы добавляете ширину текстов к прямоугольникам после измерения с помощью QFontMetrics и так далее, это для просмотра всего диапазона аннотационных предложений.

Если вы добавите ";" для исправления вашего кода, исследуйте строку и удалите аннотацию. (возможно, я думаю, что было бы хорошо переключать флаги для их записи или удаления в операции paintEvent.)

Заранее нужно сделать все типы текстов аннотаций (по собственному правилу) и спланировать, когда и где они будут использоваться.

Другие вопросы по теме