QSyntaxHighlighter: Подсветка синтаксиса в Qt

QSyntaxHighlighter: Подсветка синтаксиса в Qt

Если приложение использует текстовое поле для ввода данных, то заметно упростить жизнь пользователю может подсветка синтаксиса. Не зря этот прием весьма интенсивно используется во всех IDE и текстовых редакторах для программистов. В Qt подсветку синтаксиса легко реализовать с помощью QSyntaxHighlighter, принцип работы которого основан на паттерне Посетитель.

Создадим приложение, которое умеет подсвечивать введенный фрагмент текста.

Заголовочный файл mainwidget.h:

Здесь мы определяем главный виджет приложения и нашу реализацию класса подсветки синтаксиса, которая наследует QSyntaxHighlighter. Обратите внимание, что в конструкторе SyntaxHighlighter передается указатель на QTextDocument, к которому и привязывается подсветка синтаксиса.

Непосредственная реализация подсветки сосредоточена в виртуальной функции highlightBlock(). А строка, которую нужно подсветить, мы задаем с помощью нашей функции setHighlightedString().

Реализация mainwidget.cpp:

Ключевой частью реализации является фрагмент:

Этой функции автоматически передается каждый блок текста (в простейшем случае по одной строке), в котором проводится поиск, и в случае обнаружения соответствия задается формат QTextCharFormat.

Также обратите внимание на следующую функцию:

Вызов rehighlight() обеспечивает принудительный запуск процесса подсветки синтаксиса для вновь заданной строки.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий