QTextEdit и выделение цветом (Как сделать это нормальным способом?)

Модератор: Модераторы разделов

Аватара пользователя
folibis
Сообщения: 92
ОС: Arch-ик

QTextEdit и выделение цветом

Сообщение folibis »

Делаю поиск по RegExp. Для отображения текста использую QTextEdit.
Сейчас делаю так:

Код: Выделить всё

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? Быстрый и удобный?
עת לכל חפץ
Спасибо сказали: