Я делаю подсветку синтаксиса тектового редактора. Но у меня возникли некоторые проблемы с этим. Дело в том, что когда я создаю какой-нибудь QRegExp и использую его, то он подсвечивает текст от самого левого тега до самого правого тега, хотя между этими тегами тоже есть открывающиеся и закрывающиеся. Не знаю как исправить, делал на примере из Qt Assistant:
Код:
HighlightingRule rule;
italicFormat.setFontItalic(true);
rule.pattern = QRegExp("\\(.*\\)");
rule.format = italicFormat;
highlightingRules.append(rule);
------------------
void HighLighter::highlightBlock(const QString& text)
{
int length = 0;
int index = 0;
foreach (HighlightingRule rule, highlightingRules)
{
QRegExp expression(rule.pattern);
index = text.indexOf(expression);
while (index >= 0)
{
length = expression.matchedLength();
setFormat(index, length, rule.format);
index = text.indexOf(expression, index + length );
}
}
setCurrentBlockState(0);
}
Например в строке "Hello \( my \) dear \( granny\)" подсвеченно будет не "my" и "granny", а "my dear granny".
Как исправить?