Сейчас делаю так:
Код: Выделить всё
QString str = ui->sourceWindow->toPlainText();
QTextCursor cur = ui->sourceWindow->textCursor();
QRegExp expression.setPattern(pattern);
if(!expression.isEmpty())
{
int index = str.indexOf(expression,0);
while (index >= 0)
{
int length = expression.matchedLength();
cur.setPosition(index,QTextCursor::MoveAnchor);
cur.setPosition(index + length,QTextCursor::KeepAnchor);
ui->sourceWindow->setTextCursor(cur);
ui->sourceWindow->setTextBackgroundColor(QColor(60,179,113));
index = str.indexOf(expression, index + length);
}
}
cur.setPosition(0,QTextCursor::MoveAnchor);
cur.setPosition(0,QTextCursor::KeepAnchor);
ui->sourceWindow->setTextCursor(cur);Но работает это очень медленно. пробовал QSyntaxHighlighter но он не подходит. текст из QTextEdit в функцию highlightBlock приходит т.н. параграфами, в данном случае по строкам. если RegExp захватывает несколько строк то это не сработает.
Есть ли какой то нормальный способ подсветить текст в QTextEdit? Быстрый и удобный?