Лескер состоит из набора виртуальный функций, которые нужно переопределить. Класс QsciScintilla при необходимости вызывает виртуальные методы базового класса, однако в соответствии с полиморфизмом, будут вызываться методы нашего лексера.
Вот перечень виртуальных функций, необходимых для переопределения:
//! Возвращает название языка
virtual const char * language() const;
//! Цвета для стилей
virtual QColor defaultColor(int style) const;
//! Шрифты для стилей
virtual QFont defaultFont(int style) const;
//! Бакгроунд для стилей
virtual QColor defaultPaper(int style) const;
//! Разбор текста на стили
virtual void styleText (int start, int end);
//! Описание
virtual QString description (int style) const;
* This source code was highlighted with Source Code Highlighter.
Переменная style - это просто идентификатор стиля. Мы сами ее определяем. Для этого в лексере мы определяем некий enum для наших стилей. enum
{
Default = 0,
Comment = 1,
Binary = 2,
String = 3,
Keyword1 = 4,
Keyword2 = 5,
Keyword3 = 6,
Keyword4 = 7,
Const = 8
};
* This source code was highlighted with Source Code Highlighter.
Имена стилей и их числовые обозначения значения не имеют, далее станет ясно почему.Самой важной виртуальной функцией является virtual void styleText (int start, int end);
Именно она отвечает за отрисовку. К этой функции QScintilla обращается всякий раз, когда ей надо перерисовать кусок текста начиная с позиции start до позиции end.
Комментариев нет:
Отправить комментарий